危化品全生命周期管理后端
heheng
2025-02-26 996c091a4913ac768324b7ea69a8494ba9d6ece0
相忌功能
已修改17个文件
已添加19个文件
1358 ■■■■■ 文件已修改
hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/system/SysCompanyController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/system/TabooComparisonController.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/web/HzTabooWarningController.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-admin/src/main/resources/db/migration/V20250212001_change_entry_record.sql 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-admin/src/main/resources/db/migration/V20250226001_taboo_comparison.sql 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-admin/src/main/resources/db/migration/V20250226002_hz_taboo_warning.sql 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-common/src/main/java/com/gkhy/hazmat/common/constant/Constant.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-common/src/main/java/com/gkhy/hazmat/common/enums/WarehouseRecordEnum.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzEntryRecord.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzHazmat.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzTabooWarning.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzWarehouseRecord.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/TaBooComparison.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/vo/HzEntryTransferVO.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/vo/HzHazmatWarehouseVO.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/vo/HzTabooWarningVO.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/vo/TabooDisVo.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/HzHazmatMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/HzTabooWarningMapper.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/HzWarehouseMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/SysCompanyMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/SysConfigMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/TaBooComparisonMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/service/SysCompanyService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/service/TaBooComparisonService.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/service/TabooWarningService.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzEntryRecordServiceImpl.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzHazmatServiceImpl.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/SysCompanyServiceImpl.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/TaBooComparisonServiceImpl.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/TaBooWarningServiceImpl.java 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/resources/mapper/system/HzHazmatMapper.xml 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/resources/mapper/system/HzTabooWarningMapper.xml 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/resources/mapper/system/HzWarehouseMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/resources/mapper/system/HzWarehouseRecordMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/resources/mapper/system/TaBooComparisonMapper.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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();
    }
}
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();
    }
}
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();
    }
}
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`;
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);
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;
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";
}
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;
    }
}
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;
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;
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;
}
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;
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;
}
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;
}
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;
}
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;
}
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;
}
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查询危化品信息
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);
}
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);
}
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);
}
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();
}
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);
}
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);
}
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();
}
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);
}
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();
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);
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());
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("该数据已存在");
        }
    }
}
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("无权限操作其他企业数据");
            }
        }
    }
}
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">
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>
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,
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"  />
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>