tuqin
2026-10-29 86392f6e51620a47e0f6b4e8309adf3183feedbd
feat(LIMS): 补齐资源管理、系统配置两个缺失模块

按需求文档九模块清单补齐缺失的三个(安全与权限走 RuoYi 自带系统管理菜单)。

新增 7 张表 + 7 个 CRUD 模块:
资源管理:lims_instrument(仪器台账) / lims_instrument_calibration(校准维护记录)
lims_reagent(试剂耗材) / lims_reagent_record(出入库流水)
系统配置:lims_test_item(检测项目库) / lims_unit(计量单位库)
lims_judgment_standard(判定标准库)

后端 35 个 Java 文件(POJO/Mapper/Service/Impl/Controller),
ServiceImpl 用 QueryWrapper 做了真实的字段模糊查询(原 Sample 等模块 listPage 传 null 不过滤,这里没沿用)。

前端 2 个页面 + 7 个 API:
lims/resourceManagement 两个 Tab:仪器设备(含校准记录弹窗)/ 试剂耗材(含采购入库、领用出库,自动回写台账库存)
lims/systemConfig 三个 Tab:检测项目库 / 计量单位库 / 判定标准库(判定标准可关联检测项目)
已添加36个文件
1644 ■■■■■ 文件已修改
doc/sql/lims_extra_modules.sql 225 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/controller/InstrumentCalibrationController.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/controller/InstrumentController.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/controller/JudgmentStandardController.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/controller/ReagentController.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/controller/ReagentRecordController.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/controller/TestItemController.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/controller/UnitController.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/mapper/InstrumentCalibrationMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/mapper/InstrumentMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/mapper/JudgmentStandardMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/mapper/ReagentMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/mapper/ReagentRecordMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/mapper/TestItemMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/mapper/UnitMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/pojo/Instrument.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/pojo/InstrumentCalibration.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/pojo/JudgmentStandard.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/pojo/Reagent.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/pojo/ReagentRecord.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/pojo/TestItem.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/pojo/Unit.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/service/InstrumentCalibrationService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/service/InstrumentService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/service/JudgmentStandardService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/service/ReagentRecordService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/service/ReagentService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/service/TestItemService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/service/UnitService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/service/impl/InstrumentCalibrationServiceImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/service/impl/InstrumentServiceImpl.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/service/impl/JudgmentStandardServiceImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/service/impl/ReagentRecordServiceImpl.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/service/impl/ReagentServiceImpl.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/service/impl/TestItemServiceImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/lims/service/impl/UnitServiceImpl.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/sql/lims_extra_modules.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,225 @@
-- ============================================================
-- èН坼-LIMS è¡¥å……模块 DDL
--   â‘£ èµ„源管理:仪器设备维护校准 + è¯•剂耗材库存采购
--   â‘¨ ç³»ç»Ÿé…ç½®ï¼šæ£€æµ‹é¡¹ç›®åº“ / è®¡é‡å•位库 / åˆ¤å®šæ ‡å‡†åº“
-- åº“:lims-ruoyi
-- ============================================================
-- ============================================================
-- â‘£ èµ„源管理 Â· ä»ªå™¨è®¾å¤‡å°è´¦
-- ============================================================
DROP TABLE IF EXISTS `lims_instrument`;
CREATE TABLE `lims_instrument` (
  `id`                 BIGINT        NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `instrument_code`    VARCHAR(64)   DEFAULT NULL COMMENT '仪器编号',
  `instrument_name`    VARCHAR(255)  DEFAULT NULL COMMENT '仪器名称',
  `instrument_model`   VARCHAR(255)  DEFAULT NULL COMMENT '规格型号',
  `manufacturer`       VARCHAR(255)  DEFAULT NULL COMMENT '生产厂商',
  `serial_no`          VARCHAR(128)  DEFAULT NULL COMMENT '出厂序列号',
  `location`           VARCHAR(255)  DEFAULT NULL COMMENT '存放位置',
  `purchase_date`      DATE          DEFAULT NULL COMMENT '购置日期',
  `warranty_end_date`  DATE          DEFAULT NULL COMMENT '保修截止日期',
  `status`             VARCHAR(32)   DEFAULT 'normal' COMMENT '状态(normal-正常,maintenance-维修中,scrapped-已报废,idle-闲置)',
  `responsible_person` VARCHAR(64)   DEFAULT NULL COMMENT '责任人',
  `remark`             VARCHAR(1000) DEFAULT NULL COMMENT '备注',
  `maintainer`         VARCHAR(64)   DEFAULT NULL COMMENT '维护人',
  `maintenance_time`   DATE          DEFAULT NULL COMMENT '维护时间',
  `del_flag`           CHAR(1)       DEFAULT '0' COMMENT '删除标志(0-正常,2-删除)',
  `tenant_id`          BIGINT        DEFAULT NULL COMMENT '租户ID',
  `create_time`        DATETIME      DEFAULT NULL COMMENT '创建时间',
  `create_user`        INT           DEFAULT NULL COMMENT '创建用户',
  `update_time`        DATETIME      DEFAULT NULL COMMENT '修改时间',
  `update_user`        INT           DEFAULT NULL COMMENT '修改用户',
  PRIMARY KEY (`id`),
  KEY `idx_instrument_code` (`instrument_code`),
  KEY `idx_status` (`status`),
  KEY `idx_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='LIMS-仪器设备台账';
-- ============================================================
-- â‘£ èµ„源管理 Â· ä»ªå™¨æ ¡å‡†/维护记录
-- ============================================================
DROP TABLE IF EXISTS `lims_instrument_calibration`;
CREATE TABLE `lims_instrument_calibration` (
  `id`                   BIGINT        NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `instrument_id`        BIGINT        DEFAULT NULL COMMENT '仪器ID(lims_instrument.id)',
  `instrument_code`      VARCHAR(64)   DEFAULT NULL COMMENT '仪器编号(冗余便于查询)',
  `instrument_name`      VARCHAR(255)  DEFAULT NULL COMMENT '仪器名称(冗余)',
  `record_type`          VARCHAR(32)   DEFAULT 'calibration' COMMENT '记录类型(calibration-校准,maintenance-维护保养,repair-ç»´ä¿®)',
  `calibration_date`     DATE          DEFAULT NULL COMMENT '本次日期',
  `next_calibration_date` DATE         DEFAULT NULL COMMENT '下次到期日期',
  `calibration_org`      VARCHAR(255)  DEFAULT NULL COMMENT '校准/维保机构',
  `certificate_no`       VARCHAR(128)  DEFAULT NULL COMMENT '证书编号',
  `calibration_result`   VARCHAR(32)   DEFAULT NULL COMMENT '结果(pass-合格,fail-不合格,conditional-有条件通过)',
  `cost`                 DECIMAL(18,2) DEFAULT NULL COMMENT '费用',
  `executor`             VARCHAR(64)   DEFAULT NULL COMMENT '执行人',
  `remark`               VARCHAR(1000) DEFAULT NULL COMMENT '备注',
  `del_flag`             CHAR(1)       DEFAULT '0' COMMENT '删除标志(0-正常,2-删除)',
  `tenant_id`            BIGINT        DEFAULT NULL COMMENT '租户ID',
  `create_time`          DATETIME      DEFAULT NULL COMMENT '创建时间',
  `create_user`          INT           DEFAULT NULL COMMENT '创建用户',
  `update_time`          DATETIME      DEFAULT NULL COMMENT '修改时间',
  `update_user`          INT           DEFAULT NULL COMMENT '修改用户',
  PRIMARY KEY (`id`),
  KEY `idx_instrument_id` (`instrument_id`),
  KEY `idx_next_date` (`next_calibration_date`),
  KEY `idx_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='LIMS-仪器校准维护记录';
-- ============================================================
-- â‘£ èµ„源管理 Â· è¯•剂耗材台账
-- ============================================================
DROP TABLE IF EXISTS `lims_reagent`;
CREATE TABLE `lims_reagent` (
  `id`                BIGINT        NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `reagent_code`      VARCHAR(64)   DEFAULT NULL COMMENT '试剂/耗材编号',
  `reagent_name`      VARCHAR(255)  DEFAULT NULL COMMENT '名称',
  `specification`     VARCHAR(255)  DEFAULT NULL COMMENT '规格',
  `category`          VARCHAR(32)   DEFAULT NULL COMMENT '类别(reagent-试剂,consumable-耗材,standard-标准品,control-质控品)',
  `unit`              VARCHAR(32)   DEFAULT NULL COMMENT '计量单位',
  `supplier`          VARCHAR(255)  DEFAULT NULL COMMENT '供应商',
  `storage_condition` VARCHAR(255)  DEFAULT NULL COMMENT '存储条件(如 2-8℃避光)',
  `current_stock`     DECIMAL(18,4) DEFAULT 0 COMMENT '当前库存',
  `safety_stock`      DECIMAL(18,4) DEFAULT 0 COMMENT '安全库存(低于此值预警)',
  `expiry_date`       DATE          DEFAULT NULL COMMENT '有效期至',
  `location`          VARCHAR(255)  DEFAULT NULL COMMENT '存放位置',
  `status`            VARCHAR(32)   DEFAULT 'normal' COMMENT '状态(normal-正常,expiring-临期,expired-过期,depleted-已耗尽)',
  `remark`            VARCHAR(1000) DEFAULT NULL COMMENT '备注',
  `maintainer`        VARCHAR(64)   DEFAULT NULL COMMENT '维护人',
  `maintenance_time`  DATE          DEFAULT NULL COMMENT '维护时间',
  `del_flag`          CHAR(1)       DEFAULT '0' COMMENT '删除标志(0-正常,2-删除)',
  `tenant_id`         BIGINT        DEFAULT NULL COMMENT '租户ID',
  `create_time`       DATETIME      DEFAULT NULL COMMENT '创建时间',
  `create_user`       INT           DEFAULT NULL COMMENT '创建用户',
  `update_time`       DATETIME      DEFAULT NULL COMMENT '修改时间',
  `update_user`       INT           DEFAULT NULL COMMENT '修改用户',
  PRIMARY KEY (`id`),
  KEY `idx_reagent_code` (`reagent_code`),
  KEY `idx_expiry` (`expiry_date`),
  KEY `idx_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='LIMS-试剂耗材台账';
-- ============================================================
-- â‘£ èµ„源管理 Â· è¯•剂耗材出入库流水(含采购入库)
-- ============================================================
DROP TABLE IF EXISTS `lims_reagent_record`;
CREATE TABLE `lims_reagent_record` (
  `id`                  BIGINT        NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `reagent_id`          BIGINT        DEFAULT NULL COMMENT '试剂ID(lims_reagent.id)',
  `reagent_code`        VARCHAR(64)   DEFAULT NULL COMMENT '试剂编号(冗余)',
  `reagent_name`        VARCHAR(255)  DEFAULT NULL COMMENT '名称(冗余)',
  `record_type`         VARCHAR(32)   DEFAULT 'in' COMMENT '类型(in-入库(采购),out-出库(领用),return-退库,scrap-报废)',
  `quantity`            DECIMAL(18,4) DEFAULT NULL COMMENT '数量(正数)',
  `before_stock`        DECIMAL(18,4) DEFAULT NULL COMMENT '操作前库存',
  `after_stock`         DECIMAL(18,4) DEFAULT NULL COMMENT '操作后库存',
  `batch_no`            VARCHAR(128)  DEFAULT NULL COMMENT '批次号',
  `supplier`            VARCHAR(255)  DEFAULT NULL COMMENT '供应商(入库时)',
  `unit_price`          DECIMAL(18,4) DEFAULT NULL COMMENT '单价',
  `total_amount`        DECIMAL(18,2) DEFAULT NULL COMMENT '金额',
  `operator`            VARCHAR(64)   DEFAULT NULL COMMENT '经手人',
  `operate_time`        DATETIME      DEFAULT NULL COMMENT '操作时间',
  `purpose`             VARCHAR(500)  DEFAULT NULL COMMENT '用途/领用事由',
  `related_experiment`  VARCHAR(128)  DEFAULT NULL COMMENT '关联实验编号',
  `remark`              VARCHAR(1000) DEFAULT NULL COMMENT '备注',
  `del_flag`            CHAR(1)       DEFAULT '0' COMMENT '删除标志(0-正常,2-删除)',
  `tenant_id`           BIGINT        DEFAULT NULL COMMENT '租户ID',
  `create_time`         DATETIME      DEFAULT NULL COMMENT '创建时间',
  `create_user`         INT           DEFAULT NULL COMMENT '创建用户',
  `update_time`         DATETIME      DEFAULT NULL COMMENT '修改时间',
  `update_user`         INT           DEFAULT NULL COMMENT '修改用户',
  PRIMARY KEY (`id`),
  KEY `idx_reagent_id` (`reagent_id`),
  KEY `idx_operate_time` (`operate_time`),
  KEY `idx_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='LIMS-试剂耗材出入库流水';
-- ============================================================
-- â‘¨ ç³»ç»Ÿé…ç½® Â· æ£€æµ‹é¡¹ç›®åº“
-- ============================================================
DROP TABLE IF EXISTS `lims_test_item`;
CREATE TABLE `lims_test_item` (
  `id`          BIGINT        NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `item_code`   VARCHAR(64)   DEFAULT NULL COMMENT '项目编号',
  `item_name`   VARCHAR(255)  DEFAULT NULL COMMENT '检测项目名称',
  `item_type`   VARCHAR(32)   DEFAULT NULL COMMENT '类型(chemical-化学分析,physical-物理测试,microbial-微生物,other-其它)',
  `unit`        VARCHAR(32)   DEFAULT NULL COMMENT '计量单位',
  `method`      VARCHAR(500)  DEFAULT NULL COMMENT '检测方法/依据',
  `standard`    VARCHAR(255)  DEFAULT NULL COMMENT '执行标准(如 GB/T xxxx)',
  `limit_min`   DECIMAL(18,4) DEFAULT NULL COMMENT '合格下限',
  `limit_max`   DECIMAL(18,4) DEFAULT NULL COMMENT '合格上限',
  `status`      VARCHAR(4)    DEFAULT '1' COMMENT '状态(1-启用,0-停用)',
  `remark`      VARCHAR(1000) DEFAULT NULL COMMENT '备注',
  `del_flag`    CHAR(1)       DEFAULT '0' COMMENT '删除标志(0-正常,2-删除)',
  `tenant_id`   BIGINT        DEFAULT NULL COMMENT '租户ID',
  `create_time` DATETIME      DEFAULT NULL COMMENT '创建时间',
  `create_user` INT           DEFAULT NULL COMMENT '创建用户',
  `update_time` DATETIME      DEFAULT NULL COMMENT '修改时间',
  `update_user` INT           DEFAULT NULL COMMENT '修改用户',
  PRIMARY KEY (`id`),
  KEY `idx_item_code` (`item_code`),
  KEY `idx_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='LIMS-检测项目库';
-- ============================================================
-- â‘¨ ç³»ç»Ÿé…ç½® Â· è®¡é‡å•位库
-- ============================================================
DROP TABLE IF EXISTS `lims_unit`;
CREATE TABLE `lims_unit` (
  `id`              BIGINT        NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `unit_code`       VARCHAR(32)   DEFAULT NULL COMMENT '单位编码',
  `unit_name`       VARCHAR(64)   DEFAULT NULL COMMENT '单位名称',
  `unit_type`       VARCHAR(32)   DEFAULT NULL COMMENT '类型(weight-重量,volume-体积,length-长度,temperature-温度,concentration-浓度,count-计数)',
  `base_unit`       VARCHAR(32)   DEFAULT NULL COMMENT '基准单位(换算参照)',
  `conversion_rate` DECIMAL(18,6) DEFAULT 1 COMMENT '换算系数(1 æœ¬å•位 = N åŸºå‡†å•位)',
  `status`          VARCHAR(4)    DEFAULT '1' COMMENT '状态(1-启用,0-停用)',
  `remark`          VARCHAR(500)  DEFAULT NULL COMMENT '备注',
  `del_flag`        CHAR(1)       DEFAULT '0' COMMENT '删除标志(0-正常,2-删除)',
  `tenant_id`       BIGINT        DEFAULT NULL COMMENT '租户ID',
  `create_time`     DATETIME      DEFAULT NULL COMMENT '创建时间',
  `create_user`     INT           DEFAULT NULL COMMENT '创建用户',
  `update_time`     DATETIME      DEFAULT NULL COMMENT '修改时间',
  `update_user`     INT           DEFAULT NULL COMMENT '修改用户',
  PRIMARY KEY (`id`),
  KEY `idx_unit_code` (`unit_code`),
  KEY `idx_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='LIMS-计量单位库';
-- ============================================================
-- â‘¨ ç³»ç»Ÿé…ç½® Â· åˆ¤å®šæ ‡å‡†åº“
-- ============================================================
DROP TABLE IF EXISTS `lims_judgment_standard`;
CREATE TABLE `lims_judgment_standard` (
  `id`             BIGINT        NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `standard_code`  VARCHAR(64)   DEFAULT NULL COMMENT '标准编号',
  `standard_name`  VARCHAR(255)  DEFAULT NULL COMMENT '标准名称',
  `item_id`        BIGINT        DEFAULT NULL COMMENT '关联检测项目ID(lims_test_item.id)',
  `item_name`      VARCHAR(255)  DEFAULT NULL COMMENT '检测项目名称(冗余)',
  `standard_type`  VARCHAR(32)   DEFAULT 'range' COMMENT '判定类型(range-区间,min-不低于,max-不高于,equal-等于,target-目标值±偏差)',
  `min_value`      DECIMAL(18,4) DEFAULT NULL COMMENT '下限',
  `max_value`      DECIMAL(18,4) DEFAULT NULL COMMENT '上限',
  `target_value`   DECIMAL(18,4) DEFAULT NULL COMMENT '目标值',
  `deviation`      DECIMAL(18,4) DEFAULT NULL COMMENT '允许偏差',
  `unit`           VARCHAR(32)   DEFAULT NULL COMMENT '单位',
  `source_standard` VARCHAR(255) DEFAULT NULL COMMENT '依据标准(如 GB 5749-2022)',
  `status`         VARCHAR(4)    DEFAULT '1' COMMENT '状态(1-启用,0-停用)',
  `remark`         VARCHAR(1000) DEFAULT NULL COMMENT '备注',
  `del_flag`       CHAR(1)       DEFAULT '0' COMMENT '删除标志(0-正常,2-删除)',
  `tenant_id`      BIGINT        DEFAULT NULL COMMENT '租户ID',
  `create_time`    DATETIME      DEFAULT NULL COMMENT '创建时间',
  `create_user`    INT           DEFAULT NULL COMMENT '创建用户',
  `update_time`    DATETIME      DEFAULT NULL COMMENT '修改时间',
  `update_user`    INT           DEFAULT NULL COMMENT '修改用户',
  PRIMARY KEY (`id`),
  KEY `idx_standard_code` (`standard_code`),
  KEY `idx_item_id` (`item_id`),
  KEY `idx_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='LIMS-判定标准库';
-- ============================================================
-- æ ¡éªŒ
-- ============================================================
SELECT table_name, table_comment
FROM information_schema.tables
WHERE table_schema = 'lims-ruoyi'
  AND table_name IN ('lims_instrument','lims_instrument_calibration','lims_reagent','lims_reagent_record','lims_test_item','lims_unit','lims_judgment_standard')
ORDER BY table_name;
src/main/java/com/ruoyi/lims/controller/InstrumentCalibrationController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package com.ruoyi.lims.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.lims.pojo.InstrumentCalibration;
import com.ruoyi.lims.service.InstrumentCalibrationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@AllArgsConstructor
@RequestMapping("/lims/instrumentCalibration")
@Api(value = "InstrumentCalibration", tags = "Instrument Calibration Records")
public class InstrumentCalibrationController {
    private InstrumentCalibrationService calibrationService;
    @GetMapping("/listPage")
    @ApiOperation("Paged query")
    public AjaxResult listPage(Page<InstrumentCalibration> page, InstrumentCalibration query) {
        IPage<InstrumentCalibration> result = calibrationService.listPage(page, query);
        return AjaxResult.success(result);
    }
    @GetMapping("/{id}")
    @ApiOperation("Get by id")
    public AjaxResult getById(@PathVariable Long id) {
        return AjaxResult.success(calibrationService.getById(id));
    }
    @PostMapping("/add")
    @ApiOperation("Add")
    public AjaxResult add(@RequestBody InstrumentCalibration entity) {
        return AjaxResult.success(calibrationService.save(entity));
    }
    @PostMapping("/update")
    @ApiOperation("Update")
    public AjaxResult update(@RequestBody InstrumentCalibration entity) {
        return AjaxResult.success(calibrationService.updateById(entity));
    }
    @DeleteMapping("/delete")
    @ApiOperation("Batch delete")
    public AjaxResult delete(@RequestBody List<Long> ids) {
        if (CollectionUtils.isEmpty(ids)) return AjaxResult.error("ids required");
        return AjaxResult.success(calibrationService.removeBatchByIds(ids));
    }
}
src/main/java/com/ruoyi/lims/controller/InstrumentController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package com.ruoyi.lims.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.lims.pojo.Instrument;
import com.ruoyi.lims.service.InstrumentService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@AllArgsConstructor
@RequestMapping("/lims/instrument")
@Api(value = "Instrument", tags = "Instrument Ledger")
public class InstrumentController {
    private InstrumentService instrumentService;
    @GetMapping("/listPage")
    @ApiOperation("Paged query")
    public AjaxResult listPage(Page<Instrument> page, Instrument query) {
        IPage<Instrument> result = instrumentService.listPage(page, query);
        return AjaxResult.success(result);
    }
    @GetMapping("/{id}")
    @ApiOperation("Get by id")
    public AjaxResult getById(@PathVariable Long id) {
        return AjaxResult.success(instrumentService.getById(id));
    }
    @PostMapping("/add")
    @ApiOperation("Add")
    public AjaxResult add(@RequestBody Instrument entity) {
        return AjaxResult.success(instrumentService.save(entity));
    }
    @PostMapping("/update")
    @ApiOperation("Update")
    public AjaxResult update(@RequestBody Instrument entity) {
        return AjaxResult.success(instrumentService.updateById(entity));
    }
    @DeleteMapping("/delete")
    @ApiOperation("Batch delete")
    public AjaxResult delete(@RequestBody List<Long> ids) {
        if (CollectionUtils.isEmpty(ids)) return AjaxResult.error("ids required");
        return AjaxResult.success(instrumentService.removeBatchByIds(ids));
    }
}
src/main/java/com/ruoyi/lims/controller/JudgmentStandardController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package com.ruoyi.lims.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.lims.pojo.JudgmentStandard;
import com.ruoyi.lims.service.JudgmentStandardService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@AllArgsConstructor
@RequestMapping("/lims/judgmentStandard")
@Api(value = "JudgmentStandard", tags = "Judgment Standard Library")
public class JudgmentStandardController {
    private JudgmentStandardService judgmentStandardService;
    @GetMapping("/listPage")
    @ApiOperation("Paged query")
    public AjaxResult listPage(Page<JudgmentStandard> page, JudgmentStandard query) {
        IPage<JudgmentStandard> result = judgmentStandardService.listPage(page, query);
        return AjaxResult.success(result);
    }
    @GetMapping("/{id}")
    @ApiOperation("Get by id")
    public AjaxResult getById(@PathVariable Long id) {
        return AjaxResult.success(judgmentStandardService.getById(id));
    }
    @PostMapping("/add")
    @ApiOperation("Add")
    public AjaxResult add(@RequestBody JudgmentStandard entity) {
        return AjaxResult.success(judgmentStandardService.save(entity));
    }
    @PostMapping("/update")
    @ApiOperation("Update")
    public AjaxResult update(@RequestBody JudgmentStandard entity) {
        return AjaxResult.success(judgmentStandardService.updateById(entity));
    }
    @DeleteMapping("/delete")
    @ApiOperation("Batch delete")
    public AjaxResult delete(@RequestBody List<Long> ids) {
        if (CollectionUtils.isEmpty(ids)) return AjaxResult.error("ids required");
        return AjaxResult.success(judgmentStandardService.removeBatchByIds(ids));
    }
}
src/main/java/com/ruoyi/lims/controller/ReagentController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package com.ruoyi.lims.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.lims.pojo.Reagent;
import com.ruoyi.lims.service.ReagentService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@AllArgsConstructor
@RequestMapping("/lims/reagent")
@Api(value = "Reagent", tags = "Reagent and Consumable Ledger")
public class ReagentController {
    private ReagentService reagentService;
    @GetMapping("/listPage")
    @ApiOperation("Paged query")
    public AjaxResult listPage(Page<Reagent> page, Reagent query) {
        IPage<Reagent> result = reagentService.listPage(page, query);
        return AjaxResult.success(result);
    }
    @GetMapping("/{id}")
    @ApiOperation("Get by id")
    public AjaxResult getById(@PathVariable Long id) {
        return AjaxResult.success(reagentService.getById(id));
    }
    @PostMapping("/add")
    @ApiOperation("Add")
    public AjaxResult add(@RequestBody Reagent entity) {
        return AjaxResult.success(reagentService.save(entity));
    }
    @PostMapping("/update")
    @ApiOperation("Update")
    public AjaxResult update(@RequestBody Reagent entity) {
        return AjaxResult.success(reagentService.updateById(entity));
    }
    @DeleteMapping("/delete")
    @ApiOperation("Batch delete")
    public AjaxResult delete(@RequestBody List<Long> ids) {
        if (CollectionUtils.isEmpty(ids)) return AjaxResult.error("ids required");
        return AjaxResult.success(reagentService.removeBatchByIds(ids));
    }
}
src/main/java/com/ruoyi/lims/controller/ReagentRecordController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package com.ruoyi.lims.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.lims.pojo.ReagentRecord;
import com.ruoyi.lims.service.ReagentRecordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@AllArgsConstructor
@RequestMapping("/lims/reagentRecord")
@Api(value = "ReagentRecord", tags = "Reagent Stock In/Out Records")
public class ReagentRecordController {
    private ReagentRecordService reagentRecordService;
    @GetMapping("/listPage")
    @ApiOperation("Paged query")
    public AjaxResult listPage(Page<ReagentRecord> page, ReagentRecord query) {
        IPage<ReagentRecord> result = reagentRecordService.listPage(page, query);
        return AjaxResult.success(result);
    }
    @GetMapping("/{id}")
    @ApiOperation("Get by id")
    public AjaxResult getById(@PathVariable Long id) {
        return AjaxResult.success(reagentRecordService.getById(id));
    }
    @PostMapping("/add")
    @ApiOperation("Add")
    public AjaxResult add(@RequestBody ReagentRecord entity) {
        return AjaxResult.success(reagentRecordService.save(entity));
    }
    @PostMapping("/update")
    @ApiOperation("Update")
    public AjaxResult update(@RequestBody ReagentRecord entity) {
        return AjaxResult.success(reagentRecordService.updateById(entity));
    }
    @DeleteMapping("/delete")
    @ApiOperation("Batch delete")
    public AjaxResult delete(@RequestBody List<Long> ids) {
        if (CollectionUtils.isEmpty(ids)) return AjaxResult.error("ids required");
        return AjaxResult.success(reagentRecordService.removeBatchByIds(ids));
    }
}
src/main/java/com/ruoyi/lims/controller/TestItemController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package com.ruoyi.lims.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.lims.pojo.TestItem;
import com.ruoyi.lims.service.TestItemService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@AllArgsConstructor
@RequestMapping("/lims/testItem")
@Api(value = "TestItem", tags = "Test Item Library")
public class TestItemController {
    private TestItemService testItemService;
    @GetMapping("/listPage")
    @ApiOperation("Paged query")
    public AjaxResult listPage(Page<TestItem> page, TestItem query) {
        IPage<TestItem> result = testItemService.listPage(page, query);
        return AjaxResult.success(result);
    }
    @GetMapping("/{id}")
    @ApiOperation("Get by id")
    public AjaxResult getById(@PathVariable Long id) {
        return AjaxResult.success(testItemService.getById(id));
    }
    @PostMapping("/add")
    @ApiOperation("Add")
    public AjaxResult add(@RequestBody TestItem entity) {
        return AjaxResult.success(testItemService.save(entity));
    }
    @PostMapping("/update")
    @ApiOperation("Update")
    public AjaxResult update(@RequestBody TestItem entity) {
        return AjaxResult.success(testItemService.updateById(entity));
    }
    @DeleteMapping("/delete")
    @ApiOperation("Batch delete")
    public AjaxResult delete(@RequestBody List<Long> ids) {
        if (CollectionUtils.isEmpty(ids)) return AjaxResult.error("ids required");
        return AjaxResult.success(testItemService.removeBatchByIds(ids));
    }
}
src/main/java/com/ruoyi/lims/controller/UnitController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package com.ruoyi.lims.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.lims.pojo.Unit;
import com.ruoyi.lims.service.UnitService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@AllArgsConstructor
@RequestMapping("/lims/unit")
@Api(value = "Unit", tags = "Unit Library")
public class UnitController {
    private UnitService unitService;
    @GetMapping("/listPage")
    @ApiOperation("Paged query")
    public AjaxResult listPage(Page<Unit> page, Unit query) {
        IPage<Unit> result = unitService.listPage(page, query);
        return AjaxResult.success(result);
    }
    @GetMapping("/{id}")
    @ApiOperation("Get by id")
    public AjaxResult getById(@PathVariable Long id) {
        return AjaxResult.success(unitService.getById(id));
    }
    @PostMapping("/add")
    @ApiOperation("Add")
    public AjaxResult add(@RequestBody Unit entity) {
        return AjaxResult.success(unitService.save(entity));
    }
    @PostMapping("/update")
    @ApiOperation("Update")
    public AjaxResult update(@RequestBody Unit entity) {
        return AjaxResult.success(unitService.updateById(entity));
    }
    @DeleteMapping("/delete")
    @ApiOperation("Batch delete")
    public AjaxResult delete(@RequestBody List<Long> ids) {
        if (CollectionUtils.isEmpty(ids)) return AjaxResult.error("ids required");
        return AjaxResult.success(unitService.removeBatchByIds(ids));
    }
}
src/main/java/com/ruoyi/lims/mapper/InstrumentCalibrationMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.ruoyi.lims.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.lims.pojo.InstrumentCalibration;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface InstrumentCalibrationMapper extends BaseMapper<InstrumentCalibration> {
}
src/main/java/com/ruoyi/lims/mapper/InstrumentMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.ruoyi.lims.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.lims.pojo.Instrument;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface InstrumentMapper extends BaseMapper<Instrument> {
}
src/main/java/com/ruoyi/lims/mapper/JudgmentStandardMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.ruoyi.lims.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.lims.pojo.JudgmentStandard;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface JudgmentStandardMapper extends BaseMapper<JudgmentStandard> {
}
src/main/java/com/ruoyi/lims/mapper/ReagentMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.ruoyi.lims.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.lims.pojo.Reagent;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ReagentMapper extends BaseMapper<Reagent> {
}
src/main/java/com/ruoyi/lims/mapper/ReagentRecordMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.ruoyi.lims.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.lims.pojo.ReagentRecord;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ReagentRecordMapper extends BaseMapper<ReagentRecord> {
}
src/main/java/com/ruoyi/lims/mapper/TestItemMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.ruoyi.lims.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.lims.pojo.TestItem;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface TestItemMapper extends BaseMapper<TestItem> {
}
src/main/java/com/ruoyi/lims/mapper/UnitMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.ruoyi.lims.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.lims.pojo.Unit;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UnitMapper extends BaseMapper<Unit> {
}
src/main/java/com/ruoyi/lims/pojo/Instrument.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,99 @@
package com.ruoyi.lims.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Data
@TableName("lims_instrument")
public class Instrument implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @ApiModelProperty(value = "Instrument code")
    private String instrumentCode;
    @ApiModelProperty(value = "Instrument name")
    private String instrumentName;
    @ApiModelProperty(value = "Model")
    private String instrumentModel;
    @ApiModelProperty(value = "Manufacturer")
    private String manufacturer;
    @ApiModelProperty(value = "Serial number")
    private String serialNo;
    @ApiModelProperty(value = "Storage location")
    private String location;
    @ApiModelProperty(value = "Purchase date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate purchaseDate;
    @ApiModelProperty(value = "Warranty end date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate warrantyEndDate;
    @ApiModelProperty(value = "Status: normal/maintenance/scrapped/idle")
    private String status;
    @ApiModelProperty(value = "Responsible person")
    private String responsiblePerson;
    @ApiModelProperty(value = "Remark")
    private String remark;
    @ApiModelProperty(value = "Maintainer")
    private String maintainer;
    @ApiModelProperty(value = "Maintenance time")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate maintenanceTime;
    @ApiModelProperty(value = "Delete flag")
    private String delFlag;
    @ApiModelProperty(value = "Tenant id")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    @ApiModelProperty(value = "Create time")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "Create user")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "Update time")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @ApiModelProperty(value = "Update user")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
}
src/main/java/com/ruoyi/lims/pojo/InstrumentCalibration.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,94 @@
package com.ruoyi.lims.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Data
@TableName("lims_instrument_calibration")
public class InstrumentCalibration implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @ApiModelProperty(value = "Instrument id")
    private Long instrumentId;
    @ApiModelProperty(value = "Instrument code")
    private String instrumentCode;
    @ApiModelProperty(value = "Instrument name")
    private String instrumentName;
    @ApiModelProperty(value = "Type: calibration/maintenance/repair")
    private String recordType;
    @ApiModelProperty(value = "Calibration date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate calibrationDate;
    @ApiModelProperty(value = "Next due date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate nextCalibrationDate;
    @ApiModelProperty(value = "Calibration organization")
    private String calibrationOrg;
    @ApiModelProperty(value = "Certificate number")
    private String certificateNo;
    @ApiModelProperty(value = "Result: pass/fail/conditional")
    private String calibrationResult;
    @ApiModelProperty(value = "Cost")
    private BigDecimal cost;
    @ApiModelProperty(value = "Executor")
    private String executor;
    @ApiModelProperty(value = "Remark")
    private String remark;
    @ApiModelProperty(value = "Delete flag")
    private String delFlag;
    @ApiModelProperty(value = "Tenant id")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    @ApiModelProperty(value = "Create time")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "Create user")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "Update time")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @ApiModelProperty(value = "Update user")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
}
src/main/java/com/ruoyi/lims/pojo/JudgmentStandard.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
package com.ruoyi.lims.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Data
@TableName("lims_judgment_standard")
public class JudgmentStandard implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @ApiModelProperty(value = "Standard code")
    private String standardCode;
    @ApiModelProperty(value = "Standard name")
    private String standardName;
    @ApiModelProperty(value = "Test item id")
    private Long itemId;
    @ApiModelProperty(value = "Test item name")
    private String itemName;
    @ApiModelProperty(value = "Type: range/min/max/equal/target")
    private String standardType;
    @ApiModelProperty(value = "Min value")
    private BigDecimal minValue;
    @ApiModelProperty(value = "Max value")
    private BigDecimal maxValue;
    @ApiModelProperty(value = "Target value")
    private BigDecimal targetValue;
    @ApiModelProperty(value = "Deviation")
    private BigDecimal deviation;
    @ApiModelProperty(value = "Unit")
    private String unit;
    @ApiModelProperty(value = "Source standard")
    private String sourceStandard;
    @ApiModelProperty(value = "Status 1 enabled 0 disabled")
    private String status;
    @ApiModelProperty(value = "Remark")
    private String remark;
    @ApiModelProperty(value = "Delete flag")
    private String delFlag;
    @ApiModelProperty(value = "Tenant id")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    @ApiModelProperty(value = "Create time")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "Create user")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "Update time")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @ApiModelProperty(value = "Update user")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
}
src/main/java/com/ruoyi/lims/pojo/Reagent.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,103 @@
package com.ruoyi.lims.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Data
@TableName("lims_reagent")
public class Reagent implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @ApiModelProperty(value = "Reagent code")
    private String reagentCode;
    @ApiModelProperty(value = "Reagent name")
    private String reagentName;
    @ApiModelProperty(value = "Specification")
    private String specification;
    @ApiModelProperty(value = "Category: reagent/consumable/standard/control")
    private String category;
    @ApiModelProperty(value = "Unit")
    private String unit;
    @ApiModelProperty(value = "Supplier")
    private String supplier;
    @ApiModelProperty(value = "Storage condition")
    private String storageCondition;
    @ApiModelProperty(value = "Current stock")
    private BigDecimal currentStock;
    @ApiModelProperty(value = "Safety stock")
    private BigDecimal safetyStock;
    @ApiModelProperty(value = "Expiry date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate expiryDate;
    @ApiModelProperty(value = "Location")
    private String location;
    @ApiModelProperty(value = "Status: normal/expiring/expired/depleted")
    private String status;
    @ApiModelProperty(value = "Remark")
    private String remark;
    @ApiModelProperty(value = "Maintainer")
    private String maintainer;
    @ApiModelProperty(value = "Maintenance time")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate maintenanceTime;
    @ApiModelProperty(value = "Delete flag")
    private String delFlag;
    @ApiModelProperty(value = "Tenant id")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    @ApiModelProperty(value = "Create time")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "Create user")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "Update time")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @ApiModelProperty(value = "Update user")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
}
src/main/java/com/ruoyi/lims/pojo/ReagentRecord.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,104 @@
package com.ruoyi.lims.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Data
@TableName("lims_reagent_record")
public class ReagentRecord implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @ApiModelProperty(value = "Reagent id")
    private Long reagentId;
    @ApiModelProperty(value = "Reagent code")
    private String reagentCode;
    @ApiModelProperty(value = "Reagent name")
    private String reagentName;
    @ApiModelProperty(value = "Type: in/out/return/scrap")
    private String recordType;
    @ApiModelProperty(value = "Quantity")
    private BigDecimal quantity;
    @ApiModelProperty(value = "Stock before")
    private BigDecimal beforeStock;
    @ApiModelProperty(value = "Stock after")
    private BigDecimal afterStock;
    @ApiModelProperty(value = "Batch number")
    private String batchNo;
    @ApiModelProperty(value = "Supplier")
    private String supplier;
    @ApiModelProperty(value = "Unit price")
    private BigDecimal unitPrice;
    @ApiModelProperty(value = "Total amount")
    private BigDecimal totalAmount;
    @ApiModelProperty(value = "Operator")
    private String operator;
    @ApiModelProperty(value = "Operate time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime operateTime;
    @ApiModelProperty(value = "Purpose")
    private String purpose;
    @ApiModelProperty(value = "Related experiment")
    private String relatedExperiment;
    @ApiModelProperty(value = "Remark")
    private String remark;
    @ApiModelProperty(value = "Delete flag")
    private String delFlag;
    @ApiModelProperty(value = "Tenant id")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    @ApiModelProperty(value = "Create time")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "Create user")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "Update time")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @ApiModelProperty(value = "Update user")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
}
src/main/java/com/ruoyi/lims/pojo/TestItem.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
package com.ruoyi.lims.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Data
@TableName("lims_test_item")
public class TestItem implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @ApiModelProperty(value = "Item code")
    private String itemCode;
    @ApiModelProperty(value = "Item name")
    private String itemName;
    @ApiModelProperty(value = "Type: chemical/physical/microbial/other")
    private String itemType;
    @ApiModelProperty(value = "Unit")
    private String unit;
    @ApiModelProperty(value = "Test method")
    private String method;
    @ApiModelProperty(value = "Standard")
    private String standard;
    @ApiModelProperty(value = "Lower limit")
    private BigDecimal limitMin;
    @ApiModelProperty(value = "Upper limit")
    private BigDecimal limitMax;
    @ApiModelProperty(value = "Status 1 enabled 0 disabled")
    private String status;
    @ApiModelProperty(value = "Remark")
    private String remark;
    @ApiModelProperty(value = "Delete flag")
    private String delFlag;
    @ApiModelProperty(value = "Tenant id")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    @ApiModelProperty(value = "Create time")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "Create user")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "Update time")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @ApiModelProperty(value = "Update user")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
}
src/main/java/com/ruoyi/lims/pojo/Unit.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
package com.ruoyi.lims.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Data
@TableName("lims_unit")
public class Unit implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @ApiModelProperty(value = "Unit code")
    private String unitCode;
    @ApiModelProperty(value = "Unit name")
    private String unitName;
    @ApiModelProperty(value = "Type: weight/volume/length/temperature/concentration/count")
    private String unitType;
    @ApiModelProperty(value = "Base unit")
    private String baseUnit;
    @ApiModelProperty(value = "Conversion rate")
    private BigDecimal conversionRate;
    @ApiModelProperty(value = "Status 1 enabled 0 disabled")
    private String status;
    @ApiModelProperty(value = "Remark")
    private String remark;
    @ApiModelProperty(value = "Delete flag")
    private String delFlag;
    @ApiModelProperty(value = "Tenant id")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    @ApiModelProperty(value = "Create time")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "Create user")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "Update time")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @ApiModelProperty(value = "Update user")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
}
src/main/java/com/ruoyi/lims/service/InstrumentCalibrationService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package com.ruoyi.lims.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.lims.pojo.InstrumentCalibration;
public interface InstrumentCalibrationService extends IService<InstrumentCalibration> {
    IPage<InstrumentCalibration> listPage(Page<InstrumentCalibration> page, InstrumentCalibration query);
}
src/main/java/com/ruoyi/lims/service/InstrumentService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package com.ruoyi.lims.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.lims.pojo.Instrument;
public interface InstrumentService extends IService<Instrument> {
    IPage<Instrument> listPage(Page<Instrument> page, Instrument query);
}
src/main/java/com/ruoyi/lims/service/JudgmentStandardService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package com.ruoyi.lims.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.lims.pojo.JudgmentStandard;
public interface JudgmentStandardService extends IService<JudgmentStandard> {
    IPage<JudgmentStandard> listPage(Page<JudgmentStandard> page, JudgmentStandard query);
}
src/main/java/com/ruoyi/lims/service/ReagentRecordService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package com.ruoyi.lims.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.lims.pojo.ReagentRecord;
public interface ReagentRecordService extends IService<ReagentRecord> {
    IPage<ReagentRecord> listPage(Page<ReagentRecord> page, ReagentRecord query);
}
src/main/java/com/ruoyi/lims/service/ReagentService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package com.ruoyi.lims.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.lims.pojo.Reagent;
public interface ReagentService extends IService<Reagent> {
    IPage<Reagent> listPage(Page<Reagent> page, Reagent query);
}
src/main/java/com/ruoyi/lims/service/TestItemService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package com.ruoyi.lims.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.lims.pojo.TestItem;
public interface TestItemService extends IService<TestItem> {
    IPage<TestItem> listPage(Page<TestItem> page, TestItem query);
}
src/main/java/com/ruoyi/lims/service/UnitService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package com.ruoyi.lims.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.lims.pojo.Unit;
public interface UnitService extends IService<Unit> {
    IPage<Unit> listPage(Page<Unit> page, Unit query);
}
src/main/java/com/ruoyi/lims/service/impl/InstrumentCalibrationServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package com.ruoyi.lims.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.lims.mapper.InstrumentCalibrationMapper;
import com.ruoyi.lims.pojo.InstrumentCalibration;
import com.ruoyi.lims.service.InstrumentCalibrationService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional(rollbackFor = Exception.class)
public class InstrumentCalibrationServiceImpl extends ServiceImpl<InstrumentCalibrationMapper, InstrumentCalibration> implements InstrumentCalibrationService {
    @Override
    public IPage<InstrumentCalibration> listPage(Page<InstrumentCalibration> page, InstrumentCalibration query) {
        QueryWrapper<InstrumentCalibration> wrapper = new QueryWrapper<>();
        if (query != null) {
        wrapper.like(StringUtils.isNotEmpty(query.getInstrumentCode()), "instrument_code", query.getInstrumentCode());
        wrapper.like(StringUtils.isNotEmpty(query.getInstrumentName()), "instrument_name", query.getInstrumentName());
        wrapper.like(StringUtils.isNotEmpty(query.getRecordType()), "record_type", query.getRecordType());
        wrapper.like(StringUtils.isNotEmpty(query.getCalibrationOrg()), "calibration_org", query.getCalibrationOrg());
        wrapper.like(StringUtils.isNotEmpty(query.getCertificateNo()), "certificate_no", query.getCertificateNo());
        wrapper.like(StringUtils.isNotEmpty(query.getCalibrationResult()), "calibration_result", query.getCalibrationResult());
        wrapper.like(StringUtils.isNotEmpty(query.getExecutor()), "executor", query.getExecutor());
        wrapper.like(StringUtils.isNotEmpty(query.getRemark()), "remark", query.getRemark());
        }
        wrapper.orderByDesc("id");
        return baseMapper.selectPage(page, wrapper);
    }
}
src/main/java/com/ruoyi/lims/service/impl/InstrumentServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package com.ruoyi.lims.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.lims.mapper.InstrumentMapper;
import com.ruoyi.lims.pojo.Instrument;
import com.ruoyi.lims.service.InstrumentService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional(rollbackFor = Exception.class)
public class InstrumentServiceImpl extends ServiceImpl<InstrumentMapper, Instrument> implements InstrumentService {
    @Override
    public IPage<Instrument> listPage(Page<Instrument> page, Instrument query) {
        QueryWrapper<Instrument> wrapper = new QueryWrapper<>();
        if (query != null) {
        wrapper.like(StringUtils.isNotEmpty(query.getInstrumentCode()), "instrument_code", query.getInstrumentCode());
        wrapper.like(StringUtils.isNotEmpty(query.getInstrumentName()), "instrument_name", query.getInstrumentName());
        wrapper.like(StringUtils.isNotEmpty(query.getInstrumentModel()), "instrument_model", query.getInstrumentModel());
        wrapper.like(StringUtils.isNotEmpty(query.getManufacturer()), "manufacturer", query.getManufacturer());
        wrapper.like(StringUtils.isNotEmpty(query.getSerialNo()), "serial_no", query.getSerialNo());
        wrapper.like(StringUtils.isNotEmpty(query.getLocation()), "location", query.getLocation());
        wrapper.like(StringUtils.isNotEmpty(query.getStatus()), "status", query.getStatus());
        wrapper.like(StringUtils.isNotEmpty(query.getResponsiblePerson()), "responsible_person", query.getResponsiblePerson());
        wrapper.like(StringUtils.isNotEmpty(query.getRemark()), "remark", query.getRemark());
        wrapper.like(StringUtils.isNotEmpty(query.getMaintainer()), "maintainer", query.getMaintainer());
        }
        wrapper.orderByDesc("id");
        return baseMapper.selectPage(page, wrapper);
    }
}
src/main/java/com/ruoyi/lims/service/impl/JudgmentStandardServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package com.ruoyi.lims.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.lims.mapper.JudgmentStandardMapper;
import com.ruoyi.lims.pojo.JudgmentStandard;
import com.ruoyi.lims.service.JudgmentStandardService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional(rollbackFor = Exception.class)
public class JudgmentStandardServiceImpl extends ServiceImpl<JudgmentStandardMapper, JudgmentStandard> implements JudgmentStandardService {
    @Override
    public IPage<JudgmentStandard> listPage(Page<JudgmentStandard> page, JudgmentStandard query) {
        QueryWrapper<JudgmentStandard> wrapper = new QueryWrapper<>();
        if (query != null) {
        wrapper.like(StringUtils.isNotEmpty(query.getStandardCode()), "standard_code", query.getStandardCode());
        wrapper.like(StringUtils.isNotEmpty(query.getStandardName()), "standard_name", query.getStandardName());
        wrapper.like(StringUtils.isNotEmpty(query.getItemName()), "item_name", query.getItemName());
        wrapper.like(StringUtils.isNotEmpty(query.getStandardType()), "standard_type", query.getStandardType());
        wrapper.like(StringUtils.isNotEmpty(query.getUnit()), "unit", query.getUnit());
        wrapper.like(StringUtils.isNotEmpty(query.getSourceStandard()), "source_standard", query.getSourceStandard());
        wrapper.like(StringUtils.isNotEmpty(query.getStatus()), "status", query.getStatus());
        wrapper.like(StringUtils.isNotEmpty(query.getRemark()), "remark", query.getRemark());
        }
        wrapper.orderByDesc("id");
        return baseMapper.selectPage(page, wrapper);
    }
}
src/main/java/com/ruoyi/lims/service/impl/ReagentRecordServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.ruoyi.lims.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.lims.mapper.ReagentRecordMapper;
import com.ruoyi.lims.pojo.ReagentRecord;
import com.ruoyi.lims.service.ReagentRecordService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional(rollbackFor = Exception.class)
public class ReagentRecordServiceImpl extends ServiceImpl<ReagentRecordMapper, ReagentRecord> implements ReagentRecordService {
    @Override
    public IPage<ReagentRecord> listPage(Page<ReagentRecord> page, ReagentRecord query) {
        QueryWrapper<ReagentRecord> wrapper = new QueryWrapper<>();
        if (query != null) {
        wrapper.like(StringUtils.isNotEmpty(query.getReagentCode()), "reagent_code", query.getReagentCode());
        wrapper.like(StringUtils.isNotEmpty(query.getReagentName()), "reagent_name", query.getReagentName());
        wrapper.like(StringUtils.isNotEmpty(query.getRecordType()), "record_type", query.getRecordType());
        wrapper.like(StringUtils.isNotEmpty(query.getBatchNo()), "batch_no", query.getBatchNo());
        wrapper.like(StringUtils.isNotEmpty(query.getSupplier()), "supplier", query.getSupplier());
        wrapper.like(StringUtils.isNotEmpty(query.getOperator()), "operator", query.getOperator());
        wrapper.like(StringUtils.isNotEmpty(query.getPurpose()), "purpose", query.getPurpose());
        wrapper.like(StringUtils.isNotEmpty(query.getRelatedExperiment()), "related_experiment", query.getRelatedExperiment());
        wrapper.like(StringUtils.isNotEmpty(query.getRemark()), "remark", query.getRemark());
        }
        wrapper.orderByDesc("id");
        return baseMapper.selectPage(page, wrapper);
    }
}
src/main/java/com/ruoyi/lims/service/impl/ReagentServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
package com.ruoyi.lims.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.lims.mapper.ReagentMapper;
import com.ruoyi.lims.pojo.Reagent;
import com.ruoyi.lims.service.ReagentService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional(rollbackFor = Exception.class)
public class ReagentServiceImpl extends ServiceImpl<ReagentMapper, Reagent> implements ReagentService {
    @Override
    public IPage<Reagent> listPage(Page<Reagent> page, Reagent query) {
        QueryWrapper<Reagent> wrapper = new QueryWrapper<>();
        if (query != null) {
        wrapper.like(StringUtils.isNotEmpty(query.getReagentCode()), "reagent_code", query.getReagentCode());
        wrapper.like(StringUtils.isNotEmpty(query.getReagentName()), "reagent_name", query.getReagentName());
        wrapper.like(StringUtils.isNotEmpty(query.getSpecification()), "specification", query.getSpecification());
        wrapper.like(StringUtils.isNotEmpty(query.getCategory()), "category", query.getCategory());
        wrapper.like(StringUtils.isNotEmpty(query.getUnit()), "unit", query.getUnit());
        wrapper.like(StringUtils.isNotEmpty(query.getSupplier()), "supplier", query.getSupplier());
        wrapper.like(StringUtils.isNotEmpty(query.getStorageCondition()), "storage_condition", query.getStorageCondition());
        wrapper.like(StringUtils.isNotEmpty(query.getLocation()), "location", query.getLocation());
        wrapper.like(StringUtils.isNotEmpty(query.getStatus()), "status", query.getStatus());
        wrapper.like(StringUtils.isNotEmpty(query.getRemark()), "remark", query.getRemark());
        wrapper.like(StringUtils.isNotEmpty(query.getMaintainer()), "maintainer", query.getMaintainer());
        }
        wrapper.orderByDesc("id");
        return baseMapper.selectPage(page, wrapper);
    }
}
src/main/java/com/ruoyi/lims/service/impl/TestItemServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package com.ruoyi.lims.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.lims.mapper.TestItemMapper;
import com.ruoyi.lims.pojo.TestItem;
import com.ruoyi.lims.service.TestItemService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional(rollbackFor = Exception.class)
public class TestItemServiceImpl extends ServiceImpl<TestItemMapper, TestItem> implements TestItemService {
    @Override
    public IPage<TestItem> listPage(Page<TestItem> page, TestItem query) {
        QueryWrapper<TestItem> wrapper = new QueryWrapper<>();
        if (query != null) {
        wrapper.like(StringUtils.isNotEmpty(query.getItemCode()), "item_code", query.getItemCode());
        wrapper.like(StringUtils.isNotEmpty(query.getItemName()), "item_name", query.getItemName());
        wrapper.like(StringUtils.isNotEmpty(query.getItemType()), "item_type", query.getItemType());
        wrapper.like(StringUtils.isNotEmpty(query.getUnit()), "unit", query.getUnit());
        wrapper.like(StringUtils.isNotEmpty(query.getMethod()), "method", query.getMethod());
        wrapper.like(StringUtils.isNotEmpty(query.getStandard()), "standard", query.getStandard());
        wrapper.like(StringUtils.isNotEmpty(query.getStatus()), "status", query.getStatus());
        wrapper.like(StringUtils.isNotEmpty(query.getRemark()), "remark", query.getRemark());
        }
        wrapper.orderByDesc("id");
        return baseMapper.selectPage(page, wrapper);
    }
}
src/main/java/com/ruoyi/lims/service/impl/UnitServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.ruoyi.lims.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.lims.mapper.UnitMapper;
import com.ruoyi.lims.pojo.Unit;
import com.ruoyi.lims.service.UnitService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional(rollbackFor = Exception.class)
public class UnitServiceImpl extends ServiceImpl<UnitMapper, Unit> implements UnitService {
    @Override
    public IPage<Unit> listPage(Page<Unit> page, Unit query) {
        QueryWrapper<Unit> wrapper = new QueryWrapper<>();
        if (query != null) {
        wrapper.like(StringUtils.isNotEmpty(query.getUnitCode()), "unit_code", query.getUnitCode());
        wrapper.like(StringUtils.isNotEmpty(query.getUnitName()), "unit_name", query.getUnitName());
        wrapper.like(StringUtils.isNotEmpty(query.getUnitType()), "unit_type", query.getUnitType());
        wrapper.like(StringUtils.isNotEmpty(query.getBaseUnit()), "base_unit", query.getBaseUnit());
        wrapper.like(StringUtils.isNotEmpty(query.getStatus()), "status", query.getStatus());
        wrapper.like(StringUtils.isNotEmpty(query.getRemark()), "remark", query.getRemark());
        }
        wrapper.orderByDesc("id");
        return baseMapper.selectPage(page, wrapper);
    }
}