baoshiwei
2025-03-12 3c2c87364b89de46d12e95abd5bdf8cbd2c6dbf6
dev-init
已添加59个文件
已修改7个文件
4584 ■■■■■ 文件已修改
pom.xml 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/pom.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/org/dromara/DromaraApplication.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-dev.yml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application.yml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/pom.xml 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/controller/LbBatchController.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/controller/LbDeviceController.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/controller/LbRetestResultController.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/controller/LbSensorController.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/controller/LbSensorResultController.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/controller/LbSensorRetestController.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/controller/LbTestResultController.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/LbBatch.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/LbDevice.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/LbRetestResult.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/LbSensor.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/LbSensorResult.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/LbSensorRetest.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/LbTestResult.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/bo/LbBatchBo.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/bo/LbDeviceBo.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/bo/LbRetestResultBo.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/bo/LbSensorBo.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/bo/LbSensorResultBo.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/bo/LbSensorRetestBo.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/bo/LbTestResultBo.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/vo/LbBatchVo.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/vo/LbDeviceVo.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/vo/LbRetestResultVo.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/vo/LbSensorResultVo.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/vo/LbSensorRetestVo.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/vo/LbSensorVo.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/vo/LbTestResultVo.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/handle/CustomEncodingTypeHandler.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/mapper/LbBatchMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/mapper/LbDeviceMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/mapper/LbRetestResultMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/mapper/LbSensorMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/mapper/LbSensorResultMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/mapper/LbSensorRetestMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/mapper/LbTestResultMapper.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/ILbBatchService.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/ILbDeviceService.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/ILbRetestResultService.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/ILbSensorResultService.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/ILbSensorRetestService.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/ILbSensorService.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/ILbTestResultService.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/impl/LbBatchServiceImpl.java 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/impl/LbDeviceServiceImpl.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/impl/LbRetestResultServiceImpl.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/impl/LbSensorResultServiceImpl.java 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/impl/LbSensorRetestServiceImpl.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/impl/LbSensorServiceImpl.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/impl/LbTestResultServiceImpl.java 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/resources/mapper/qms/LbBatchMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/resources/mapper/qms/LbDeviceMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/resources/mapper/qms/LbRetestResultMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/resources/mapper/qms/LbSensorMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/resources/mapper/qms/LbSensorResultMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/resources/mapper/qms/LbSensorRetestMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/resources/mapper/qms/LbTestResultMapper.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/lb-qms/src/main/resources/mapper/system/LbDeviceMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/pom.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -10,7 +10,7 @@
    <name>RuoYi-Vue-Plus</name>
    <url>https://gitee.com/dromara/RuoYi-Vue-Plus</url>
    <description>RuoYi-Vue-Plus多租户管理系统</description>
    <description>兰宝车间质量管理系统</description>
    <properties>
        <revision>5.2.2</revision>
@@ -364,6 +364,13 @@
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>org.dromara</groupId>
                <artifactId>lb-qms</artifactId>
                <version>${revision}</version>
            </dependency>
            <!--  å·¥ä½œæµæ¨¡å—  -->
            <dependency>
                <groupId>org.dromara</groupId>
ruoyi-admin/pom.xml
@@ -87,6 +87,12 @@
            <artifactId>ruoyi-demo</artifactId>
        </dependency>
        <!--  è½¦é—´è´¨é‡æ¨¡å—  -->
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>lb-qms</artifactId>
        </dependency>
        <!--  å·¥ä½œæµæ¨¡å—  -->
        <dependency>
            <groupId>org.dromara</groupId>
ruoyi-admin/src/main/java/org/dromara/DromaraApplication.java
@@ -10,14 +10,14 @@
 * @author Lion Li
 */
@SpringBootApplication
@SpringBootApplication(scanBasePackages={"org.dromara", "cn.shlanbao"})
public class DromaraApplication {
    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(DromaraApplication.class);
        application.setApplicationStartup(new BufferingApplicationStartup(2048));
        application.run(args);
        System.out.println("(♥◠‿◠)ノ゙  RuoYi-Vue-Plus启动成功   áƒš(´ڡ`ლ)゙");
        System.out.println("(♥◠‿◠)ノ゙  å…°å®è½¦é—´è´¨é‡ç®¡ç†ç³»ç»Ÿ å¯åŠ¨æˆåŠŸ   áƒš(´ڡ`ლ)゙");
    }
}
ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java
@@ -103,7 +103,7 @@
        Long userId = LoginHelper.getUserId();
        scheduledExecutorService.schedule(() -> {
            SseMessageDto dto = new SseMessageDto();
            dto.setMessage("欢迎登录RuoYi-Vue-Plus后台管理系统");
            dto.setMessage("欢迎登录兰宝车间质量管理系统");
            dto.setUserIds(List.of(userId));
            SseMessageUtils.publishMessage(dto);
        }, 5, TimeUnit.SECONDS);
ruoyi-admin/src/main/resources/application-dev.yml
@@ -1,7 +1,7 @@
--- # ç›‘控中心配置
spring.boot.admin.client:
  # å¢žåŠ å®¢æˆ·ç«¯å¼€å…³
  enabled: true
  enabled: false
  url: http://localhost:9090/admin
  instance:
    service-host-type: IP
@@ -13,7 +13,7 @@
--- # snail-job é…ç½®
snail-job:
  enabled: true
  enabled: false
  # éœ€è¦åœ¨ SnailJob åŽå°ç»„管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务
  group: "ruoyi_group"
  # SnailJob æŽ¥å…¥éªŒè¯ä»¤ç‰Œ è¯¦è§ script/sql/snail_job.sql `sj_group_config` è¡¨
@@ -45,9 +45,9 @@
          driverClassName: com.mysql.cj.jdbc.Driver
          # jdbc æ‰€æœ‰å‚数配置参考 https://lionli.blog.csdn.net/article/details/122018562
          # rewriteBatchedStatements=true æ‰¹å¤„理优化 å¤§å¹…提升批量插入更新删除性能(对数据库有性能损耗 ä½¿ç”¨æ‰¹é‡æ“ä½œåº”考虑性能问题)
          url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
          url: jdbc:mysql://192.168.12.240:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
          username: root
          password: root
          password: 123456
        # ä»Žåº“数据源
        slave:
          lazy: true
@@ -100,7 +100,7 @@
    # æ•°æ®åº“索引
    database: 0
    # redis å¯†ç å¿…须配置
    password: ruoyi123
    #password: ruoyi123
    # è¿žæŽ¥è¶…æ—¶æ—¶é—´
    timeout: 10s
    # æ˜¯å¦å¼€å¯ssl
ruoyi-admin/src/main/resources/application.yml
@@ -8,7 +8,7 @@
  copyrightYear: 2024
captcha:
  enable: true
  enable: false
  # é¡µé¢ <参数设置> å¯å¼€å¯å…³é—­ éªŒè¯ç æ ¡éªŒ
  # éªŒè¯ç ç±»åž‹ math æ•°ç»„计算 char å­—符验证
  type: MATH
@@ -125,7 +125,7 @@
# å¤šç§Ÿæˆ·é…ç½®
tenant:
  # æ˜¯å¦å¼€å¯
  enable: true
  enable: false
  # æŽ’除表
  excludes:
    - sys_menu
@@ -142,11 +142,11 @@
# https://baomidou.com/config/
mybatis-plus:
  # å¤šåŒ…名使用 ä¾‹å¦‚ org.dromara.**.mapper,org.xxx.**.mapper
  mapperPackage: org.dromara.**.mapper
  mapperPackage: org.dromara.**.mapper,cn.shlanbao.**.mapper
  # å¯¹åº”çš„ XML æ–‡ä»¶ä½ç½®
  mapperLocations: classpath*:mapper/**/*Mapper.xml
  # å®žä½“扫描,多个package用逗号或者分号分隔
  typeAliasesPackage: org.dromara.**.domain
  typeAliasesPackage: org.dromara.**.domain, cn.shlanbao.**.domain
  global-config:
    dbConfig:
      # ä¸»é”®ç±»åž‹
@@ -171,7 +171,7 @@
# api接口加密
api-decrypt:
  # æ˜¯å¦å¼€å¯å…¨å±€æŽ¥å£åР坆
  enabled: true
  enabled: false
  # AES åŠ å¯†å¤´æ ‡è¯†
  headerFlag: encrypt-key
  # å“åº”加密公钥 éžå¯¹ç§°ç®—法的公私钥 å¦‚:SM2,RSA ä½¿ç”¨è€…请自行更换
@@ -217,6 +217,8 @@
      packages-to-scan: org.dromara.system
    - group: 4.代码生成模块
      packages-to-scan: org.dromara.generator
    - group: 5.质量模块
      packages-to-scan: cn.shlanbao.qms
# é˜²æ­¢XSS攻击
xss:
ruoyi-modules/lb-qms/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,102 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.dromara</groupId>
        <artifactId>ruoyi-modules</artifactId>
        <version>${revision}</version>
    </parent>
    <artifactId>lb-qms</artifactId>
    <description>
        demo模块
    </description>
    <dependencies>
        <!-- é€šç”¨å·¥å…·-->
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>ruoyi-common-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>ruoyi-common-doc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>ruoyi-common-sms</artifactId>
        </dependency>
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>ruoyi-common-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>ruoyi-common-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>ruoyi-common-idempotent</artifactId>
        </dependency>
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>ruoyi-common-mybatis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>ruoyi-common-log</artifactId>
        </dependency>
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>ruoyi-common-excel</artifactId>
        </dependency>
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>ruoyi-common-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>ruoyi-common-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>ruoyi-common-ratelimiter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>ruoyi-common-translation</artifactId>
        </dependency>
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>ruoyi-common-sensitive</artifactId>
        </dependency>
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>ruoyi-common-encrypt</artifactId>
        </dependency>
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>ruoyi-common-tenant</artifactId>
        </dependency>
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>ruoyi-common-websocket</artifactId>
        </dependency>
    </dependencies>
</project>
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/controller/LbBatchController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,114 @@
package cn.shlanbao.qms.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import cn.shlanbao.qms.domain.vo.LbBatchVo;
import cn.shlanbao.qms.domain.bo.LbBatchBo;
import cn.shlanbao.qms.service.ILbBatchService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
 * æ‰¹æ¬¡ç®¡ç†
 *
 * @author bsw
 * @date 2024-12-12
 */
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/qms/batch")
public class LbBatchController extends BaseController {
    private final ILbBatchService lbBatchService;
    /**
     * æŸ¥è¯¢æ‰¹æ¬¡ç®¡ç†åˆ—表
     */
    @SaCheckPermission("qms:batch:list")
    @GetMapping("/list")
    public TableDataInfo<LbBatchVo> list(LbBatchBo bo, PageQuery pageQuery) {
        return lbBatchService.queryPageList(bo, pageQuery);
    }
    /**
     * æŸ¥è¯¢åˆ†ç»„去重后的所有产品型号
     */
    @SaCheckPermission("qms:batch:list")
    @GetMapping("/distinctProductModels")
    public R<List<String>> getDistinctProductModels() {
        return R.ok(lbBatchService.queryDistinctProductModels());
    }
    /**
     * å¯¼å‡ºæ‰¹æ¬¡ç®¡ç†åˆ—表
     */
    @SaCheckPermission("qms:batch:export")
    @Log(title = "批次管理", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(LbBatchBo bo, HttpServletResponse response) {
        List<LbBatchVo> list = lbBatchService.queryList(bo);
        ExcelUtil.exportExcel(list, "批次管理", LbBatchVo.class, response);
    }
    /**
     * èŽ·å–æ‰¹æ¬¡ç®¡ç†è¯¦ç»†ä¿¡æ¯
     *
     * @param id ä¸»é”®
     */
    @SaCheckPermission("qms:batch:query")
    @GetMapping("/{id}")
    public R<LbBatchVo> getInfo(@NotNull(message = "主键不能为空")
                                     @PathVariable Long id) {
        return R.ok(lbBatchService.queryById(id));
    }
    /**
     * æ–°å¢žæ‰¹æ¬¡ç®¡ç†
     */
    @SaCheckPermission("qms:batch:add")
    @Log(title = "批次管理", businessType = BusinessType.INSERT)
    @RepeatSubmit()
    @PostMapping()
    public R<Void> add(@Validated(AddGroup.class) @RequestBody LbBatchBo bo) {
        return toAjax(lbBatchService.insertByBo(bo));
    }
    /**
     * ä¿®æ”¹æ‰¹æ¬¡ç®¡ç†
     */
    @SaCheckPermission("qms:batch:edit")
    @Log(title = "批次管理", businessType = BusinessType.UPDATE)
    @RepeatSubmit()
    @PutMapping()
    public R<Void> edit(@Validated(EditGroup.class) @RequestBody LbBatchBo bo) {
        return toAjax(lbBatchService.updateByBo(bo));
    }
    /**
     * åˆ é™¤æ‰¹æ¬¡ç®¡ç†
     *
     * @param ids ä¸»é”®ä¸²
     */
    @SaCheckPermission("qms:batch:remove")
    @Log(title = "批次管理", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public R<Void> remove(@NotEmpty(message = "主键不能为空")
                          @PathVariable Long[] ids) {
        return toAjax(lbBatchService.deleteWithValidByIds(List.of(ids), true));
    }
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/controller/LbDeviceController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,105 @@
package cn.shlanbao.qms.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import cn.shlanbao.qms.domain.vo.LbDeviceVo;
import cn.shlanbao.qms.domain.bo.LbDeviceBo;
import cn.shlanbao.qms.service.ILbDeviceService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
 * æµ‹è¯•仪
 *
 * @author bsw
 * @date 2024-12-12
 */
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/qms/device")
public class LbDeviceController extends BaseController {
    private final ILbDeviceService lbDeviceService;
    /**
     * æŸ¥è¯¢æµ‹è¯•仪列表
     */
    @SaCheckPermission("qms:device:list")
    @GetMapping("/list")
    public TableDataInfo<LbDeviceVo> list(LbDeviceBo bo, PageQuery pageQuery) {
        return lbDeviceService.queryPageList(bo, pageQuery);
    }
    /**
     * å¯¼å‡ºæµ‹è¯•仪列表
     */
    @SaCheckPermission("qms:device:export")
    @Log(title = "测试仪", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(LbDeviceBo bo, HttpServletResponse response) {
        List<LbDeviceVo> list = lbDeviceService.queryList(bo);
        ExcelUtil.exportExcel(list, "测试仪", LbDeviceVo.class, response);
    }
    /**
     * èŽ·å–æµ‹è¯•ä»ªè¯¦ç»†ä¿¡æ¯
     *
     * @param id ä¸»é”®
     */
    @SaCheckPermission("qms:device:query")
    @GetMapping("/{id}")
    public R<LbDeviceVo> getInfo(@NotNull(message = "主键不能为空")
                                     @PathVariable Long id) {
        return R.ok(lbDeviceService.queryById(id));
    }
    /**
     * æ–°å¢žæµ‹è¯•仪
     */
    @SaCheckPermission("qms:device:add")
    @Log(title = "测试仪", businessType = BusinessType.INSERT)
    @RepeatSubmit()
    @PostMapping()
    public R<Void> add(@Validated(AddGroup.class) @RequestBody LbDeviceBo bo) {
        return toAjax(lbDeviceService.insertByBo(bo));
    }
    /**
     * ä¿®æ”¹æµ‹è¯•仪
     */
    @SaCheckPermission("qms:device:edit")
    @Log(title = "测试仪", businessType = BusinessType.UPDATE)
    @RepeatSubmit()
    @PutMapping()
    public R<Void> edit(@Validated(EditGroup.class) @RequestBody LbDeviceBo bo) {
        return toAjax(lbDeviceService.updateByBo(bo));
    }
    /**
     * åˆ é™¤æµ‹è¯•仪
     *
     * @param ids ä¸»é”®ä¸²
     */
    @SaCheckPermission("qms:device:remove")
    @Log(title = "测试仪", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public R<Void> remove(@NotEmpty(message = "主键不能为空")
                          @PathVariable Long[] ids) {
        return toAjax(lbDeviceService.deleteWithValidByIds(List.of(ids), true));
    }
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/controller/LbRetestResultController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,105 @@
package cn.shlanbao.qms.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import cn.shlanbao.qms.domain.vo.LbRetestResultVo;
import cn.shlanbao.qms.domain.bo.LbRetestResultBo;
import cn.shlanbao.qms.service.ILbRetestResultService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
 * å¤æµ‹è®°å½•
 *
 * @author Lion Li
 * @date 2025-03-10
 */
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/qms/retestResult")
public class LbRetestResultController extends BaseController {
    private final ILbRetestResultService lbRetestResultService;
    /**
     * æŸ¥è¯¢å¤æµ‹è®°å½•列表
     */
    @SaCheckPermission("qms:retestResult:list")
    @GetMapping("/list")
    public TableDataInfo<LbRetestResultVo> list(LbRetestResultBo bo, PageQuery pageQuery) {
        return lbRetestResultService.queryPageList(bo, pageQuery);
    }
    /**
     * å¯¼å‡ºå¤æµ‹è®°å½•列表
     */
    @SaCheckPermission("qms:retestResult:export")
    @Log(title = "复测记录", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(LbRetestResultBo bo, HttpServletResponse response) {
        List<LbRetestResultVo> list = lbRetestResultService.queryList(bo);
        ExcelUtil.exportExcel(list, "复测记录", LbRetestResultVo.class, response);
    }
    /**
     * èŽ·å–å¤æµ‹è®°å½•è¯¦ç»†ä¿¡æ¯
     *
     * @param batchCode ä¸»é”®
     */
    @SaCheckPermission("qms:retestResult:query")
    @GetMapping("/{batchCode}")
    public R<LbRetestResultVo> getInfo(@NotNull(message = "主键不能为空")
                                     @PathVariable String batchCode) {
        return R.ok(lbRetestResultService.queryById(batchCode));
    }
    /**
     * æ–°å¢žå¤æµ‹è®°å½•
     */
    @SaCheckPermission("qms:retestResult:add")
    @Log(title = "复测记录", businessType = BusinessType.INSERT)
    @RepeatSubmit()
    @PostMapping()
    public R<Void> add(@Validated(AddGroup.class) @RequestBody LbRetestResultBo bo) {
        return toAjax(lbRetestResultService.insertByBo(bo));
    }
    /**
     * ä¿®æ”¹å¤æµ‹è®°å½•
     */
    @SaCheckPermission("qms:retestResult:edit")
    @Log(title = "复测记录", businessType = BusinessType.UPDATE)
    @RepeatSubmit()
    @PutMapping()
    public R<Void> edit(@Validated(EditGroup.class) @RequestBody LbRetestResultBo bo) {
        return toAjax(lbRetestResultService.updateByBo(bo));
    }
    /**
     * åˆ é™¤å¤æµ‹è®°å½•
     *
     * @param batchCodes ä¸»é”®ä¸²
     */
    @SaCheckPermission("qms:retestResult:remove")
    @Log(title = "复测记录", businessType = BusinessType.DELETE)
    @DeleteMapping("/{batchCodes}")
    public R<Void> remove(@NotEmpty(message = "主键不能为空")
                          @PathVariable String[] batchCodes) {
        return toAjax(lbRetestResultService.deleteWithValidByIds(List.of(batchCodes), true));
    }
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/controller/LbSensorController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,105 @@
package cn.shlanbao.qms.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import cn.shlanbao.qms.domain.vo.LbSensorVo;
import cn.shlanbao.qms.domain.bo.LbSensorBo;
import cn.shlanbao.qms.service.ILbSensorService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
 * ä¼ æ„Ÿå™¨
 *
 * @author bsw
 * @date 2024-12-11
 */
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/qms/sensor")
public class LbSensorController extends BaseController {
    private final ILbSensorService lbSensorService;
    /**
     * æŸ¥è¯¢ä¼ æ„Ÿå™¨åˆ—表
     */
    @SaCheckPermission("qms:sensor:list")
    @GetMapping("/list")
    public TableDataInfo<LbSensorVo> list(LbSensorBo bo, PageQuery pageQuery) {
        return lbSensorService.queryPageList(bo, pageQuery);
    }
    /**
     * å¯¼å‡ºä¼ æ„Ÿå™¨åˆ—表
     */
    @SaCheckPermission("qms:sensor:export")
    @Log(title = "传感器", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(LbSensorBo bo, HttpServletResponse response) {
        List<LbSensorVo> list = lbSensorService.queryList(bo);
        ExcelUtil.exportExcel(list, "传感器", LbSensorVo.class, response);
    }
    /**
     * èŽ·å–ä¼ æ„Ÿå™¨è¯¦ç»†ä¿¡æ¯
     *
     * @param prodId ä¸»é”®
     */
    @SaCheckPermission("qms:sensor:query")
    @GetMapping("/{prodId}")
    public R<LbSensorVo> getInfo(@NotNull(message = "主键不能为空")
                                     @PathVariable Long prodId) {
        return R.ok(lbSensorService.queryById(prodId));
    }
    /**
     * æ–°å¢žä¼ æ„Ÿå™¨
     */
    @SaCheckPermission("qms:sensor:add")
    @Log(title = "传感器", businessType = BusinessType.INSERT)
    @RepeatSubmit()
    @PostMapping()
    public R<Void> add(@Validated(AddGroup.class) @RequestBody LbSensorBo bo) {
        return toAjax(lbSensorService.insertByBo(bo));
    }
    /**
     * ä¿®æ”¹ä¼ æ„Ÿå™¨
     */
    @SaCheckPermission("qms:sensor:edit")
    @Log(title = "传感器", businessType = BusinessType.UPDATE)
    @RepeatSubmit()
    @PutMapping()
    public R<Void> edit(@Validated(EditGroup.class) @RequestBody LbSensorBo bo) {
        return toAjax(lbSensorService.updateByBo(bo));
    }
    /**
     * åˆ é™¤ä¼ æ„Ÿå™¨
     *
     * @param prodIds ä¸»é”®ä¸²
     */
    @SaCheckPermission("qms:sensor:remove")
    @Log(title = "传感器", businessType = BusinessType.DELETE)
    @DeleteMapping("/{prodIds}")
    public R<Void> remove(@NotEmpty(message = "主键不能为空")
                          @PathVariable Long[] prodIds) {
        return toAjax(lbSensorService.deleteWithValidByIds(List.of(prodIds), true));
    }
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/controller/LbSensorResultController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,105 @@
package cn.shlanbao.qms.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import cn.shlanbao.qms.domain.vo.LbSensorResultVo;
import cn.shlanbao.qms.domain.bo.LbSensorResultBo;
import cn.shlanbao.qms.service.ILbSensorResultService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
 * æ‰¹æ¬¡æ˜Žç»†
 *
 * @author bsw
 * @date 2024-12-27
 */
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/qms/sensorResult")
public class LbSensorResultController extends BaseController {
    private final ILbSensorResultService lbSensorResultService;
    /**
     * æŸ¥è¯¢æ‰¹æ¬¡æ˜Žç»†åˆ—表
     */
    @SaCheckPermission("qms:sensorResult:list")
    @GetMapping("/list")
    public TableDataInfo<LbSensorResultVo> list(LbSensorResultBo bo, PageQuery pageQuery) {
        return lbSensorResultService.queryPageList(bo, pageQuery);
    }
    /**
     * å¯¼å‡ºæ‰¹æ¬¡æ˜Žç»†åˆ—表
     */
    @SaCheckPermission("qms:sensorResult:export")
    @Log(title = "批次明细", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(LbSensorResultBo bo, HttpServletResponse response) {
        List<LbSensorResultVo> list = lbSensorResultService.queryList(bo);
        ExcelUtil.exportExcel(list, "批次明细", LbSensorResultVo.class, response);
    }
    /**
     * èŽ·å–æ‰¹æ¬¡æ˜Žç»†è¯¦ç»†ä¿¡æ¯
     *
     * @param batchCode ä¸»é”®
     */
    @SaCheckPermission("qms:sensorResult:query")
    @GetMapping("/{batchCode}")
    public R<LbSensorResultVo> getInfo(@NotNull(message = "主键不能为空")
                                     @PathVariable String batchCode) {
        return R.ok(lbSensorResultService.queryById(batchCode));
    }
    /**
     * æ–°å¢žæ‰¹æ¬¡æ˜Žç»†
     */
    @SaCheckPermission("qms:sensorResult:add")
    @Log(title = "批次明细", businessType = BusinessType.INSERT)
    @RepeatSubmit()
    @PostMapping()
    public R<Void> add(@Validated(AddGroup.class) @RequestBody LbSensorResultBo bo) {
        return toAjax(lbSensorResultService.insertByBo(bo));
    }
    /**
     * ä¿®æ”¹æ‰¹æ¬¡æ˜Žç»†
     */
    @SaCheckPermission("qms:sensorResult:edit")
    @Log(title = "批次明细", businessType = BusinessType.UPDATE)
    @RepeatSubmit()
    @PutMapping()
    public R<Void> edit(@Validated(EditGroup.class) @RequestBody LbSensorResultBo bo) {
        return toAjax(lbSensorResultService.updateByBo(bo));
    }
    /**
     * åˆ é™¤æ‰¹æ¬¡æ˜Žç»†
     *
     * @param batchCodes ä¸»é”®ä¸²
     */
    @SaCheckPermission("qms:sensorResult:remove")
    @Log(title = "批次明细", businessType = BusinessType.DELETE)
    @DeleteMapping("/{batchCodes}")
    public R<Void> remove(@NotEmpty(message = "主键不能为空")
                          @PathVariable String[] batchCodes) {
        return toAjax(lbSensorResultService.deleteWithValidByIds(List.of(batchCodes), true));
    }
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/controller/LbSensorRetestController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,105 @@
package cn.shlanbao.qms.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import cn.shlanbao.qms.domain.vo.LbSensorRetestVo;
import cn.shlanbao.qms.domain.bo.LbSensorRetestBo;
import cn.shlanbao.qms.service.ILbSensorRetestService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
 * å¤æµ‹è®°å½•
 *
 * @author bsw
 * @date 2025-03-10
 */
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/qms/sensorRetest")
public class LbSensorRetestController extends BaseController {
    private final ILbSensorRetestService lbSensorRetestService;
    /**
     * æŸ¥è¯¢å¤æµ‹è®°å½•列表
     */
    @SaCheckPermission("qms:sensorRetest:list")
    @GetMapping("/list")
    public TableDataInfo<LbSensorRetestVo> list(LbSensorRetestBo bo, PageQuery pageQuery) {
        return lbSensorRetestService.queryPageList(bo, pageQuery);
    }
    /**
     * å¯¼å‡ºå¤æµ‹è®°å½•列表
     */
    @SaCheckPermission("qms:sensorRetest:export")
    @Log(title = "复测记录", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(LbSensorRetestBo bo, HttpServletResponse response) {
        List<LbSensorRetestVo> list = lbSensorRetestService.queryList(bo);
        ExcelUtil.exportExcel(list, "复测记录", LbSensorRetestVo.class, response);
    }
    /**
     * èŽ·å–å¤æµ‹è®°å½•è¯¦ç»†ä¿¡æ¯
     *
     * @param batchCode ä¸»é”®
     */
    @SaCheckPermission("qms:sensorRetest:query")
    @GetMapping("/{batchCode}")
    public R<LbSensorRetestVo> getInfo(@NotNull(message = "主键不能为空")
                                     @PathVariable String batchCode) {
        return R.ok(lbSensorRetestService.queryById(batchCode));
    }
    /**
     * æ–°å¢žå¤æµ‹è®°å½•
     */
    @SaCheckPermission("qms:sensorRetest:add")
    @Log(title = "复测记录", businessType = BusinessType.INSERT)
    @RepeatSubmit()
    @PostMapping()
    public R<Void> add(@Validated(AddGroup.class) @RequestBody LbSensorRetestBo bo) {
        return toAjax(lbSensorRetestService.insertByBo(bo));
    }
    /**
     * ä¿®æ”¹å¤æµ‹è®°å½•
     */
    @SaCheckPermission("qms:sensorRetest:edit")
    @Log(title = "复测记录", businessType = BusinessType.UPDATE)
    @RepeatSubmit()
    @PutMapping()
    public R<Void> edit(@Validated(EditGroup.class) @RequestBody LbSensorRetestBo bo) {
        return toAjax(lbSensorRetestService.updateByBo(bo));
    }
    /**
     * åˆ é™¤å¤æµ‹è®°å½•
     *
     * @param batchCodes ä¸»é”®ä¸²
     */
    @SaCheckPermission("qms:sensorRetest:remove")
    @Log(title = "复测记录", businessType = BusinessType.DELETE)
    @DeleteMapping("/{batchCodes}")
    public R<Void> remove(@NotEmpty(message = "主键不能为空")
                          @PathVariable String[] batchCodes) {
        return toAjax(lbSensorRetestService.deleteWithValidByIds(List.of(batchCodes), true));
    }
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/controller/LbTestResultController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,123 @@
package cn.shlanbao.qms.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import cn.shlanbao.qms.domain.vo.LbTestResultVo;
import cn.shlanbao.qms.domain.bo.LbTestResultBo;
import cn.shlanbao.qms.service.ILbTestResultService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
 * æµ‹è¯•结果
 *
 * @author bsw
 * @date 2024-12-12
 */
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/qms/testResult")
public class LbTestResultController extends BaseController {
    private final ILbTestResultService lbTestResultService;
    /**
     * æŸ¥è¯¢æµ‹è¯•结果列表
     */
    @SaCheckPermission("qms:testResult:list")
    @GetMapping("/list")
    public TableDataInfo<LbTestResultVo> list(LbTestResultBo bo, PageQuery pageQuery) {
        return lbTestResultService.queryPageList(bo, pageQuery);
    }
    /**
     * æŸ¥è¯¢æµ‹è¯•结果列表
     */
    @SaCheckPermission("qms:testResult:list")
    @GetMapping("/listAll")
    public R<List<LbTestResultVo>> listAll(LbTestResultBo bo) {
        return R.ok(lbTestResultService.queryList(bo));
    }
    /**
     * æŸ¥è¯¢åˆ†ç»„去重后的所有测试项目
     */
    @SaCheckPermission("qms:testResult:list")
    @GetMapping("/distinctTestItems")
    public R<List<String>> getDistinctTestItems() {
        return R.ok(lbTestResultService.queryDistinctTestItems());
    }
    /**
     * å¯¼å‡ºæµ‹è¯•结果列表
     */
    @SaCheckPermission("qms:testResult:export")
    @Log(title = "测试结果", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(LbTestResultBo bo, HttpServletResponse response) {
        List<LbTestResultVo> list = lbTestResultService.queryList(bo);
        ExcelUtil.exportExcel(list, "测试结果", LbTestResultVo.class, response);
    }
    /**
     * èŽ·å–æµ‹è¯•ç»“æžœè¯¦ç»†ä¿¡æ¯
     *
     * @param id ä¸»é”®
     */
    @SaCheckPermission("qms:testResult:query")
    @GetMapping("/{id}")
    public R<LbTestResultVo> getInfo(@NotNull(message = "主键不能为空")
                                     @PathVariable Long id) {
        return R.ok(lbTestResultService.queryById(id));
    }
    /**
     * æ–°å¢žæµ‹è¯•结果
     */
    @SaCheckPermission("qms:testResult:add")
    @Log(title = "测试结果", businessType = BusinessType.INSERT)
    @RepeatSubmit()
    @PostMapping()
    public R<Void> add(@Validated(AddGroup.class) @RequestBody LbTestResultBo bo) {
        return toAjax(lbTestResultService.insertByBo(bo));
    }
    /**
     * ä¿®æ”¹æµ‹è¯•结果
     */
    @SaCheckPermission("qms:testResult:edit")
    @Log(title = "测试结果", businessType = BusinessType.UPDATE)
    @RepeatSubmit()
    @PutMapping()
    public R<Void> edit(@Validated(EditGroup.class) @RequestBody LbTestResultBo bo) {
        return toAjax(lbTestResultService.updateByBo(bo));
    }
    /**
     * åˆ é™¤æµ‹è¯•结果
     *
     * @param ids ä¸»é”®ä¸²
     */
    @SaCheckPermission("qms:testResult:remove")
    @Log(title = "测试结果", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public R<Void> remove(@NotEmpty(message = "主键不能为空")
                          @PathVariable Long[] ids) {
        return toAjax(lbTestResultService.deleteWithValidByIds(List.of(ids), true));
    }
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/LbBatch.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package cn.shlanbao.qms.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
 * æ‰¹æ¬¡ç®¡ç†å¯¹è±¡ lb_batch
 *
 * @author bsw
 * @date 2024-12-12
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("lb_batch")
public class LbBatch extends BaseEntity {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     *
     */
    @TableId(value = "id")
    private Long id;
    /**
     * æ‰¹æ¬¡å·
     */
    private String batchCode;
    /**
     * äº§å“åž‹å·
     */
    private String prodModel;
    /**
     * ç”¨æˆ·ç¼–号
     */
    private Long userId;
    /**
     * è®¾å¤‡å·
     */
    private String deviceCode;
    /**
     * æ•°é‡
     */
    private Long num;
    /**
     * å¤‡æ³¨
     */
    private String remark;
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/LbDevice.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package cn.shlanbao.qms.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
 * æµ‹è¯•仪对象 lb_device
 *
 * @author bsw
 * @date 2024-12-12
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("lb_device")
public class LbDevice extends BaseEntity {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     *
     */
    @TableId(value = "id")
    private Long id;
    /**
     * è®¾å¤‡ç±»åž‹
     */
    private String deviceType;
    /**
     * è®¾å¤‡ç¼–号
     */
    private String deviceCode;
    /**
     * æ‰€åœ¨ç»„
     */
    private String deviceGroup;
    /**
     * æ‰€åœ¨éƒ¨é—¨
     */
    private String deviceDept;
    /**
     * æ‰€åœ¨å·¥ä½
     */
    private String deviceStation;
    /**
     * å¤‡æ³¨
     */
    private String remark;
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/LbRetestResult.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,110 @@
package cn.shlanbao.qms.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
 * å¤æµ‹è®°å½•对象 lb_retest_result
 *
 * @author Lion Li
 * @date 2025-03-10
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("lb_retest_result")
public class LbRetestResult extends BaseEntity {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     *
     */
    private Long id;
    /**
     * æ‰¹æ¬¡å·
     */
    private String batchCode;
    /**
     * æµ‹è¯•序号
     */
    private String testNum;
    /**
     * æµ‹è¯•项目
     */
    private String testItem;
    /**
     * å¤æµ‹æ¬¡æ•°
     */
    private String retestNum;
    /**
     * è®¾å¤‡å·
     */
    private String deviceCode;
    /**
     * ç”¨æˆ·å¸å·
     */
    private String userName;
    /**
     * çŽ¯å¢ƒæ¸©åº¦
     */
    private String temp;
    /**
     * å®žé™…电压
     */
    private Long voltage;
    /**
     * å®žé™…电流
     */
    private Long loadCurrent;
    /**
     * æ ‡å‡†è·ç¦»
     */
    private Long stdDistance;
    /**
     * æ„Ÿåº”物
     */
    private String inductor;
    /**
     * è¾“出引脚(黑;白)
     */
    private String output;
    /**
     * æµ‹è¯•数据
     */
    private Long testValue;
    /**
     * åˆ¤æ–­æ¡ä»¶ï¼ˆæœ€å°å€¼<=真实值<=最大值 ï¼‰
     */
    private String judgeDetail;
    /**
     * æµ‹è¯•结果(OK; NG)
     */
    private String testResult;
    /**
     * å¤‡æ³¨
     */
    private String remark;
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/LbSensor.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,106 @@
package cn.shlanbao.qms.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
 * ä¼ æ„Ÿå™¨å¯¹è±¡ lb_sensor
 *
 * @author bsw
 * @date 2024-12-11
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("lb_sensor")
public class LbSensor extends BaseEntity {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     *
     */
    @TableId(value = "prod_id")
    private Long prodId;
    /**
     * äº§å“åž‹å·
     */
    private String prodModel;
    /**
     * äº§å“æ¡ç 
     */
    private String prodBarcode;
    /**
     * äº§å“å¤§ç±»
     */
    private String prodClass;
    /**
     * äº§å“å°ç±»
     */
    private String prodSubclass;
    /**
     * ä¾›ç”µç”µæºï¼ˆDC-直流;AC-交流)
     */
    private String supply;
    /**
     * ä¾›ç”µç”µåŽ‹é«˜å€¼
     */
    private Long supplyHigh;
    /**
     * ä¾›ç”µç”µåދ䏭值
     */
    private Long supplyMiddle;
    /**
     * ä¾›ç”µç”µåŽ‹ä½Žå€¼
     */
    private Long supplyLow;
    /**
     * è´Ÿè½½ç”µæµ
     */
    private Long loadCurrent;
    /**
     * å¼•线数量
     */
    private Long wire;
    /**
     * è¾“出信号(开关量;模拟量)
     */
    private String outputSignal;
    /**
     * è¾“出类型(NO; NC; NO+NC)
     */
    private String outputType;
    /**
     * è¾“出极性(NPN; PNP)
     */
    private String outputPolarity;
    /**
     * æ„Ÿåº”距离
     */
    private Long distance;
    /**
     * å¤‡æ³¨
     */
    private String remark;
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/LbSensorResult.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
package cn.shlanbao.qms.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
 * æ‰¹æ¬¡æ˜Žç»†å¯¹è±¡ lb_sensor_result
 *
 * @author bsw
 * @date 2024-12-27
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("lb_sensor_result")
public class LbSensorResult extends BaseEntity {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * æ‰¹æ¬¡å·
     */
    private String batchCode;
    /**
     * æµ‹è¯•序号
     */
    private String testNum;
    /**
     * è®¾å¤‡å·
     */
    private String deviceCode;
    /**
     * ç”¨æˆ·å¸å·
     */
    private String userName;
    /**
     * åˆ¤å®šç»“æžœ
     */
    private String judgeResult;
    /**
     * æ€»æµ‹è¯•项数
     */
    private Long totalCount;
    /**
     * OK项数
     */
    private Long okCount;
    /**
     * NG项数
     */
    private Long ngCount;
    /**
     * å¤‡æ³¨
     */
    private String remark;
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/LbSensorRetest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
package cn.shlanbao.qms.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
 * å¤æµ‹è®°å½•对象 lb_sensor_retest
 *
 * @author bsw
 * @date 2025-03-10
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("lb_sensor_retest")
public class LbSensorRetest extends BaseEntity {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * æ‰¹æ¬¡å·
     */
    private String batchCode;
    /**
     * æµ‹è¯•序号
     */
    private String testNum;
    /**
     * å¤æµ‹æ¬¡æ•°
     */
    private String retestNum;
    /**
     * è®¾å¤‡å·
     */
    private String deviceCode;
    /**
     * ç”¨æˆ·å¸å·
     */
    private String userName;
    /**
     * åˆ¤å®šç»“æžœ
     */
    private String judgeResult;
    /**
     * æ€»æµ‹è¯•项数
     */
    private Long totalCount;
    /**
     * OK项数
     */
    private Long okCount;
    /**
     * NG项数
     */
    private Long ngCount;
    /**
     * å¤‡æ³¨
     */
    private String remark;
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/LbTestResult.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
package cn.shlanbao.qms.domain;
import cn.shlanbao.qms.handle.CustomEncodingTypeHandler;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
 * æµ‹è¯•结果对象 lb_test_result
 *
 * @author bsw
 * @date 2024-12-12
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("lb_test_result")
public class LbTestResult extends BaseEntity {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     *
     */
    @TableId(value = "id")
    private Long id;
    /**
     * æ‰¹æ¬¡å·
     */
    private String batchCode;
    /**
     * æµ‹è¯•序号
     */
    private String testNum;
    /**
     * æµ‹è¯•项目
     */
    @TableField(typeHandler = CustomEncodingTypeHandler.class)
    private String testItem;
    /**
     * å®žé™…电压
     */
    private Double voltage;
    /**
     * å®žé™…电流
     */
    private Double loadCurrent;
    /**
     * æ ‡å‡†è·ç¦»
     */
    private Double stdDistance;
    /**
     * æ„Ÿåº”物
     */
    private String inductor;
    /**
     * è¾“出引脚(黑;白)
     */
    private String output;
    /**
     * æµ‹è¯•数据
     */
    private Double testValue;
    /**
     * åˆ¤æ–­æ¡ä»¶ï¼ˆæœ€å°å€¼<=真实值<=最大值 ï¼‰
     */
    private String judgeDetail;
    /**
     * æµ‹è¯•结果(OK; NG)
     */
    private String testResult;
    /**
     * å¤‡æ³¨
     */
    private String remark;
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/bo/LbBatchBo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
package cn.shlanbao.qms.domain.bo;
import cn.shlanbao.qms.domain.LbBatch;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
 * æ‰¹æ¬¡ç®¡ç†ä¸šåŠ¡å¯¹è±¡ lb_batch
 *
 * @author bsw
 * @date 2024-12-12
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = LbBatch.class, reverseConvertGenerate = false)
public class LbBatchBo extends BaseEntity {
    /**
     *
     */
    @NotNull(message = "不能为空", groups = { EditGroup.class })
    private Long id;
    /**
     * æ‰¹æ¬¡å·
     */
    @NotBlank(message = "批次号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String batchCode;
    /**
     * äº§å“åž‹å·
     */
    @NotBlank(message = "产品型号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String prodModel;
    /**
     * ç”¨æˆ·ç¼–号
     */
    @NotNull(message = "用户编号不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long userId;
    /**
     * è®¾å¤‡å·
     */
    @NotNull(message = "设备号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String deviceCode;
    /**
     * æ•°é‡
     */
    @NotNull(message = "数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long num;
    /**
     * å¤‡æ³¨
     */
    private String remark;
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/bo/LbDeviceBo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
package cn.shlanbao.qms.domain.bo;
import cn.shlanbao.qms.domain.LbDevice;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
 * æµ‹è¯•仪业务对象 lb_device
 *
 * @author bsw
 * @date 2024-12-12
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = LbDevice.class, reverseConvertGenerate = false)
public class LbDeviceBo extends BaseEntity {
    /**
     *
     */
    @NotNull(message = "不能为空", groups = { EditGroup.class })
    private Long id;
    /**
     * è®¾å¤‡ç±»åž‹
     */
    @NotBlank(message = "设备类型不能为空", groups = { AddGroup.class, EditGroup.class })
    private String deviceType;
    /**
     * è®¾å¤‡ç¼–号
     */
    @NotBlank(message = "设备编号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String deviceCode;
    /**
     * æ‰€åœ¨ç»„
     */
    @NotBlank(message = "所在组不能为空", groups = { AddGroup.class, EditGroup.class })
    private String deviceGroup;
    /**
     * æ‰€åœ¨éƒ¨é—¨
     */
    @NotBlank(message = "所在部门不能为空", groups = { AddGroup.class, EditGroup.class })
    private String deviceDept;
    /**
     * æ‰€åœ¨å·¥ä½
     */
    @NotBlank(message = "所在工位不能为空", groups = { AddGroup.class, EditGroup.class })
    private String deviceStation;
    /**
     * å¤‡æ³¨
     */
    private String remark;
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/bo/LbRetestResultBo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,114 @@
package cn.shlanbao.qms.domain.bo;
import cn.shlanbao.qms.domain.LbRetestResult;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
 * å¤æµ‹è®°å½•业务对象 lb_retest_result
 *
 * @author Lion Li
 * @date 2025-03-10
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = LbRetestResult.class, reverseConvertGenerate = false)
public class LbRetestResultBo extends BaseEntity {
    /**
     *
     */
    @NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long id;
    /**
     * æ‰¹æ¬¡å·
     */
    @NotBlank(message = "批次号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String batchCode;
    /**
     * æµ‹è¯•序号
     */
    @NotBlank(message = "测试序号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String testNum;
    /**
     * æµ‹è¯•项目
     */
    @NotBlank(message = "测试项目不能为空", groups = { AddGroup.class, EditGroup.class })
    private String testItem;
    /**
     * å¤æµ‹æ¬¡æ•°
     */
    @NotBlank(message = "复测次数不能为空", groups = { AddGroup.class, EditGroup.class })
    private String retestNum;
    /**
     * è®¾å¤‡å·
     */
    private String deviceCode;
    /**
     * ç”¨æˆ·å¸å·
     */
    private String userName;
    /**
     * çŽ¯å¢ƒæ¸©åº¦
     */
    private String temp;
    /**
     * å®žé™…电压
     */
    private Long voltage;
    /**
     * å®žé™…电流
     */
    private Long loadCurrent;
    /**
     * æ ‡å‡†è·ç¦»
     */
    private Long stdDistance;
    /**
     * æ„Ÿåº”物
     */
    private String inductor;
    /**
     * è¾“出引脚(黑;白)
     */
    private String output;
    /**
     * æµ‹è¯•数据
     */
    private Long testValue;
    /**
     * åˆ¤æ–­æ¡ä»¶ï¼ˆæœ€å°å€¼<=真实值<=最大值 ï¼‰
     */
    private String judgeDetail;
    /**
     * æµ‹è¯•结果(OK; NG)
     */
    private String testResult;
    /**
     * å¤‡æ³¨
     */
    private String remark;
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/bo/LbSensorBo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,115 @@
package cn.shlanbao.qms.domain.bo;
import cn.shlanbao.qms.domain.LbSensor;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
 * ä¼ æ„Ÿå™¨ä¸šåŠ¡å¯¹è±¡ lb_sensor
 *
 * @author bsw
 * @date 2024-12-11
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = LbSensor.class, reverseConvertGenerate = false)
public class LbSensorBo extends BaseEntity {
    /**
     *
     */
    @NotNull(message = "不能为空", groups = { EditGroup.class })
    private Long prodId;
    /**
     * äº§å“åž‹å·
     */
    @NotBlank(message = "产品型号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String prodModel;
    /**
     * äº§å“æ¡ç 
     */
    @NotBlank(message = "产品条码不能为空", groups = { AddGroup.class, EditGroup.class })
    private String prodBarcode;
    /**
     * äº§å“å¤§ç±»
     */
    @NotBlank(message = "产品大类不能为空", groups = { AddGroup.class, EditGroup.class })
    private String prodClass;
    /**
     * äº§å“å°ç±»
     */
    @NotBlank(message = "产品小类不能为空", groups = { AddGroup.class, EditGroup.class })
    private String prodSubclass;
    /**
     * ä¾›ç”µç”µæºï¼ˆDC-直流;AC-交流)
     */
    @NotBlank(message = "供电电源(DC-直流;AC-交流)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String supply;
    /**
     * ä¾›ç”µç”µåŽ‹é«˜å€¼
     */
    private Long supplyHigh;
    /**
     * ä¾›ç”µç”µåދ䏭值
     */
    private Long supplyMiddle;
    /**
     * ä¾›ç”µç”µåŽ‹ä½Žå€¼
     */
    private Long supplyLow;
    /**
     * è´Ÿè½½ç”µæµ
     */
    @NotNull(message = "负载电流不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long loadCurrent;
    /**
     * å¼•线数量
     */
    @NotNull(message = "引线数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long wire;
    /**
     * è¾“出信号(开关量;模拟量)
     */
    @NotBlank(message = "输出信号(开关量;模拟量)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String outputSignal;
    /**
     * è¾“出类型(NO; NC; NO+NC)
     */
    @NotBlank(message = "输出类型(NO; NC; NO+NC)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String outputType;
    /**
     * è¾“出极性(NPN; PNP)
     */
    @NotBlank(message = "输出极性(NPN; PNP)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String outputPolarity;
    /**
     * æ„Ÿåº”距离
     */
    private Long distance;
    /**
     * å¤‡æ³¨
     */
    private String remark;
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/bo/LbSensorResultBo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
package cn.shlanbao.qms.domain.bo;
import cn.shlanbao.qms.domain.LbSensorResult;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
 * æ‰¹æ¬¡æ˜Žç»†ä¸šåŠ¡å¯¹è±¡ lb_sensor_result
 *
 * @author bsw
 * @date 2024-12-27
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = LbSensorResult.class, reverseConvertGenerate = false)
public class LbSensorResultBo extends BaseEntity {
    /**
     * æ‰¹æ¬¡å·
     */
    @NotBlank(message = "批次号不能为空", groups = { EditGroup.class })
    private String batchCode;
    /**
     * æµ‹è¯•序号
     */
    @NotBlank(message = "测试序号不能为空", groups = { EditGroup.class })
    private String testNum;
    /**
     * åˆ¤å®šç»“æžœ
     */
    @NotBlank(message = "判定结果不能为空", groups = { AddGroup.class, EditGroup.class })
    private String judgeResult;
    /**
     * æ€»æµ‹è¯•项数
     */
    @NotNull(message = "总测试项数不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long totalCount;
    /**
     * OK项数
     */
    @NotNull(message = "OK项数不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long okCount;
    /**
     * NG项数
     */
    @NotNull(message = "NG项数不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long ngCount;
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/bo/LbSensorRetestBo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
package cn.shlanbao.qms.domain.bo;
import cn.shlanbao.qms.domain.LbSensorRetest;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
 * å¤æµ‹è®°å½•业务对象 lb_sensor_retest
 *
 * @author bsw
 * @date 2025-03-10
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = LbSensorRetest.class, reverseConvertGenerate = false)
public class LbSensorRetestBo extends BaseEntity {
    /**
     * æ‰¹æ¬¡å·
     */
    @NotBlank(message = "批次号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String batchCode;
    /**
     * æµ‹è¯•序号
     */
    @NotBlank(message = "测试序号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String testNum;
    /**
     * å¤æµ‹æ¬¡æ•°
     */
    @NotBlank(message = "复测次数不能为空", groups = { AddGroup.class, EditGroup.class })
    private String retestNum;
    /**
     * è®¾å¤‡å·
     */
    private String deviceCode;
    /**
     * ç”¨æˆ·å¸å·
     */
    private String userName;
    /**
     * åˆ¤å®šç»“æžœ
     */
    private String judgeResult;
    /**
     * æ€»æµ‹è¯•项数
     */
    private Long totalCount;
    /**
     * OK项数
     */
    private Long okCount;
    /**
     * NG项数
     */
    private Long ngCount;
    /**
     * å¤‡æ³¨
     */
    private String remark;
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/bo/LbTestResultBo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,105 @@
package cn.shlanbao.qms.domain.bo;
import cn.shlanbao.qms.domain.LbTestResult;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
/**
 * æµ‹è¯•结果业务对象 lb_test_result
 *
 * @author bsw
 * @date 2024-12-12
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = LbTestResult.class, reverseConvertGenerate = false)
public class LbTestResultBo extends BaseEntity {
    /**
     *
     */
    @NotNull(message = "不能为空", groups = { EditGroup.class })
    private Long id;
    /**
     * æ‰¹æ¬¡å·
     */
    @NotBlank(message = "批次号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String batchCode;
    /**
     * æµ‹è¯•序号
     */
    @NotBlank(message = "测试序号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String testNum;
    /**
     * æµ‹è¯•项目
     */
    @NotBlank(message = "测试项目不能为空", groups = { AddGroup.class, EditGroup.class })
    private String testItem;
    /**
     * å®žé™…电压
     */
    @NotNull(message = "实际电压不能为空", groups = { AddGroup.class, EditGroup.class })
    private Double voltage;
    /**
     * å®žé™…电流
     */
    @NotNull(message = "实际电流不能为空", groups = { AddGroup.class, EditGroup.class })
    private Double loadCurrent;
    /**
     * æ ‡å‡†è·ç¦»
     */
    @NotNull(message = "标准距离不能为空", groups = { AddGroup.class, EditGroup.class })
    private Double stdDistance;
    /**
     * æ„Ÿåº”物
     */
    @NotBlank(message = "感应物不能为空", groups = { AddGroup.class, EditGroup.class })
    private String inductor;
    /**
     * è¾“出引脚(黑;白)
     */
    @NotBlank(message = "输出引脚(黑;白)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String output;
    /**
     * æµ‹è¯•数据
     */
    @NotNull(message = "测试数据不能为空", groups = { AddGroup.class, EditGroup.class })
    private Double testValue;
    /**
     * åˆ¤æ–­æ¡ä»¶ï¼ˆæœ€å°å€¼<=真实值<=最大值 ï¼‰
     */
    @NotBlank(message = "判断条件(最小值<=真实值<=最大值 ï¼‰ä¸èƒ½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class })
    private String judgeDetail;
    /**
     * æµ‹è¯•结果(OK; NG)
     */
    @NotBlank(message = "测试结果(OK; NG)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String testResult;
    /**
     * å¤‡æ³¨
     */
    private String remark;
    private String prodModel;
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/vo/LbBatchVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
package cn.shlanbao.qms.domain.vo;
import cn.shlanbao.qms.domain.LbBatch;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
 * æ‰¹æ¬¡ç®¡ç†è§†å›¾å¯¹è±¡ lb_batch
 *
 * @author bsw
 * @date 2024-12-12
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = LbBatch.class)
public class LbBatchVo implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     *
     */
    @ExcelProperty(value = "")
    private Long id;
    /**
     * æ‰¹æ¬¡å·
     */
    @ExcelProperty(value = "批次号")
    private String batchCode;
    /**
     * äº§å“åž‹å·
     */
    @ExcelProperty(value = "产品型号")
    private String prodModel;
    /**
     * ç”¨æˆ·ç¼–号
     */
    @ExcelProperty(value = "用户编号")
    private Long userId;
    /**
     * è®¾å¤‡å·
     */
    @ExcelProperty(value = "设备号")
    private String deviceCode;
    /**
     * æ•°é‡
     */
    @ExcelProperty(value = "数量")
    private Long num;
    /**
     * å¤‡æ³¨
     */
    @ExcelProperty(value = "备注")
    private String remark;
    // è‰¯å“æ•°é‡
    private Long okNum;
    // ä¸è‰¯å“æ•°é‡
    private Long ngNum;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    private Date createTime;
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/vo/LbDeviceVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
package cn.shlanbao.qms.domain.vo;
import cn.shlanbao.qms.domain.LbDevice;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
 * æµ‹è¯•仪视图对象 lb_device
 *
 * @author bsw
 * @date 2024-12-12
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = LbDevice.class)
public class LbDeviceVo implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     *
     */
    @ExcelProperty(value = "")
    private Long id;
    /**
     * è®¾å¤‡ç±»åž‹
     */
    @ExcelProperty(value = "设备类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "lb_device_type")
    private String deviceType;
    /**
     * è®¾å¤‡ç¼–号
     */
    @ExcelProperty(value = "设备编号")
    private String deviceCode;
    /**
     * æ‰€åœ¨ç»„
     */
    @ExcelProperty(value = "所在组")
    private String deviceGroup;
    /**
     * æ‰€åœ¨éƒ¨é—¨
     */
    @ExcelProperty(value = "所在部门")
    private String deviceDept;
    /**
     * æ‰€åœ¨å·¥ä½
     */
    @ExcelProperty(value = "所在工位")
    private String deviceStation;
    /**
     * å¤‡æ³¨
     */
    @ExcelProperty(value = "备注")
    private String remark;
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/vo/LbRetestResultVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,137 @@
package cn.shlanbao.qms.domain.vo;
import cn.shlanbao.qms.domain.LbRetestResult;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
 * å¤æµ‹è®°å½•视图对象 lb_retest_result
 *
 * @author Lion Li
 * @date 2025-03-10
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = LbRetestResult.class)
public class LbRetestResultVo implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     *
     */
    @ExcelProperty(value = "")
    private Long id;
    /**
     * æ‰¹æ¬¡å·
     */
    @ExcelProperty(value = "批次号")
    private String batchCode;
    /**
     * æµ‹è¯•序号
     */
    @ExcelProperty(value = "测试序号")
    private String testNum;
    /**
     * æµ‹è¯•项目
     */
    @ExcelProperty(value = "测试项目")
    private String testItem;
    /**
     * å¤æµ‹æ¬¡æ•°
     */
    @ExcelProperty(value = "复测次数")
    private String retestNum;
    /**
     * è®¾å¤‡å·
     */
    @ExcelProperty(value = "设备号")
    private String deviceCode;
    /**
     * ç”¨æˆ·å¸å·
     */
    @ExcelProperty(value = "用户帐号")
    private String userName;
    /**
     * çŽ¯å¢ƒæ¸©åº¦
     */
    @ExcelProperty(value = "环境温度")
    private String temp;
    /**
     * å®žé™…电压
     */
    @ExcelProperty(value = "实际电压")
    private Long voltage;
    /**
     * å®žé™…电流
     */
    @ExcelProperty(value = "实际电流")
    private Long loadCurrent;
    /**
     * æ ‡å‡†è·ç¦»
     */
    @ExcelProperty(value = "标准距离")
    private Long stdDistance;
    /**
     * æ„Ÿåº”物
     */
    @ExcelProperty(value = "感应物")
    private String inductor;
    /**
     * è¾“出引脚(黑;白)
     */
    @ExcelProperty(value = "输出引脚", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "黑=;白")
    private String output;
    /**
     * æµ‹è¯•数据
     */
    @ExcelProperty(value = "测试数据")
    private Long testValue;
    /**
     * åˆ¤æ–­æ¡ä»¶ï¼ˆæœ€å°å€¼<=真实值<=最大值 ï¼‰
     */
    @ExcelProperty(value = "判断条件", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "最=小值<=真实值<=最大值")
    private String judgeDetail;
    /**
     * æµ‹è¯•结果(OK; NG)
     */
    @ExcelProperty(value = "测试结果", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "O=K;,N=G")
    private String testResult;
    /**
     * å¤‡æ³¨
     */
    @ExcelProperty(value = "备注")
    private String remark;
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/vo/LbSensorResultVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
package cn.shlanbao.qms.domain.vo;
import cn.shlanbao.qms.domain.LbSensorResult;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
 * æ‰¹æ¬¡æ˜Žç»†è§†å›¾å¯¹è±¡ lb_sensor_result
 *
 * @author bsw
 * @date 2024-12-27
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = LbSensorResult.class)
public class LbSensorResultVo implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * æ‰¹æ¬¡å·
     */
    @ExcelProperty(value = "批次号")
    private String batchCode;
    /**
     * æµ‹è¯•序号
     */
    @ExcelProperty(value = "测试序号")
    private String testNum;
    /**
     * åˆ¤å®šç»“æžœ
     */
    @ExcelProperty(value = "判定结果")
    private String judgeResult;
    /**
     * æ€»æµ‹è¯•项数
     */
    @ExcelProperty(value = "总测试项数")
    private Long totalCount;
    /**
     * OK项数
     */
    @ExcelProperty(value = "OK项数")
    private Long okCount;
    /**
     * NG项数
     */
    @ExcelProperty(value = "NG项数")
    private Long ngCount;
    private List<LbSensorRetestVo> children;
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/vo/LbSensorRetestVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,92 @@
package cn.shlanbao.qms.domain.vo;
import cn.shlanbao.qms.domain.LbSensorRetest;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
 * å¤æµ‹è®°å½•视图对象 lb_sensor_retest
 *
 * @author bsw
 * @date 2025-03-10
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = LbSensorRetest.class)
public class LbSensorRetestVo implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * æ‰¹æ¬¡å·
     */
    @ExcelProperty(value = "批次号")
    private String batchCode;
    /**
     * æµ‹è¯•序号
     */
    @ExcelProperty(value = "测试序号")
    private String testNum;
    /**
     * å¤æµ‹æ¬¡æ•°
     */
    @ExcelProperty(value = "复测次数")
    private String retestNum;
    /**
     * è®¾å¤‡å·
     */
    @ExcelProperty(value = "设备号")
    private String deviceCode;
    /**
     * ç”¨æˆ·å¸å·
     */
    @ExcelProperty(value = "用户帐号")
    private String userName;
    /**
     * åˆ¤å®šç»“æžœ
     */
    @ExcelProperty(value = "判定结果")
    private String judgeResult;
    /**
     * æ€»æµ‹è¯•项数
     */
    @ExcelProperty(value = "总测试项数")
    private Long totalCount;
    /**
     * OK项数
     */
    @ExcelProperty(value = "OK项数")
    private Long okCount;
    /**
     * NG项数
     */
    @ExcelProperty(value = "NG项数")
    private Long ngCount;
    /**
     * å¤‡æ³¨
     */
    @ExcelProperty(value = "备注")
    private String remark;
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/vo/LbSensorVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,137 @@
package cn.shlanbao.qms.domain.vo;
import cn.shlanbao.qms.domain.LbSensor;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
 * ä¼ æ„Ÿå™¨è§†å›¾å¯¹è±¡ lb_sensor
 *
 * @author bsw
 * @date 2024-12-11
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = LbSensor.class)
public class LbSensorVo implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     *
     */
    @ExcelProperty(value = "")
    private Long prodId;
    /**
     * äº§å“åž‹å·
     */
    @ExcelProperty(value = "产品型号")
    private String prodModel;
    /**
     * äº§å“æ¡ç 
     */
    @ExcelProperty(value = "产品条码")
    private String prodBarcode;
    /**
     * äº§å“å¤§ç±»
     */
    @ExcelProperty(value = "产品大类")
    private String prodClass;
    /**
     * äº§å“å°ç±»
     */
    @ExcelProperty(value = "产品小类")
    private String prodSubclass;
    /**
     * ä¾›ç”µç”µæºï¼ˆDC-直流;AC-交流)
     */
    @ExcelProperty(value = "供电电源", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "D=C-直流;AC-交流")
    private String supply;
    /**
     * ä¾›ç”µç”µåŽ‹é«˜å€¼
     */
    @ExcelProperty(value = "供电电压高值")
    private Long supplyHigh;
    /**
     * ä¾›ç”µç”µåދ䏭值
     */
    @ExcelProperty(value = "供电电压中值")
    private Long supplyMiddle;
    /**
     * ä¾›ç”µç”µåŽ‹ä½Žå€¼
     */
    @ExcelProperty(value = "供电电压低值")
    private Long supplyLow;
    /**
     * è´Ÿè½½ç”µæµ
     */
    @ExcelProperty(value = "负载电流")
    private Long loadCurrent;
    /**
     * å¼•线数量
     */
    @ExcelProperty(value = "引线数量")
    private Long wire;
    /**
     * è¾“出信号(开关量;模拟量)
     */
    @ExcelProperty(value = "输出信号", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "开=关量;模拟量")
    private String outputSignal;
    /**
     * è¾“出类型(NO; NC; NO+NC)
     */
    @ExcelProperty(value = "输出类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "N=O;,N=C;,N=O+NC")
    private String outputType;
    /**
     * è¾“出极性(NPN; PNP)
     */
    @ExcelProperty(value = "输出极性", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "N=PN;,P=NP")
    private String outputPolarity;
    /**
     * æ„Ÿåº”距离
     */
    @ExcelProperty(value = "感应距离")
    private Long distance;
    /**
     * å¤‡æ³¨
     */
    @ExcelProperty(value = "备注")
    private String remark;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    private Date createTime;
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/domain/vo/LbTestResultVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,118 @@
package cn.shlanbao.qms.domain.vo;
import cn.shlanbao.qms.domain.LbTestResult;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
 * æµ‹è¯•结果视图对象 lb_test_result
 *
 * @author bsw
 * @date 2024-12-12
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = LbTestResult.class)
public class LbTestResultVo implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     *
     */
    @ExcelProperty(value = "")
    private Long id;
    /**
     * æ‰¹æ¬¡å·
     */
    @ExcelProperty(value = "批次号")
    private String batchCode;
    /**
     * æµ‹è¯•序号
     */
    @ExcelProperty(value = "测试序号")
    private String testNum;
    /**
     * æµ‹è¯•项目
     */
    @ExcelProperty(value = "测试项目")
    private String testItem;
    /**
     * å®žé™…电压
     */
    @ExcelProperty(value = "实际电压")
    private Double voltage;
    /**
     * å®žé™…电流
     */
    @ExcelProperty(value = "实际电流")
    private Double loadCurrent;
    /**
     * æ ‡å‡†è·ç¦»
     */
    @ExcelProperty(value = "标准距离")
    private Double stdDistance;
    /**
     * æ„Ÿåº”物
     */
    @ExcelProperty(value = "感应物")
    private String inductor;
    /**
     * è¾“出引脚(黑;白)
     */
    @ExcelProperty(value = "输出引脚", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "黑=;白")
    private String output;
    /**
     * æµ‹è¯•数据
     */
    @ExcelProperty(value = "测试数据")
    private Double testValue;
    /**
     * åˆ¤æ–­æ¡ä»¶ï¼ˆæœ€å°å€¼<=真实值<=最大值 ï¼‰
     */
    @ExcelProperty(value = "判断条件", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "最=小值<=真实值<=最大值")
    private String judgeDetail;
    /**
     * æµ‹è¯•结果(OK; NG)
     */
    @ExcelProperty(value = "测试结果", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "O=K;,N=G")
    private String testResult;
    /**
     * å¤‡æ³¨
     */
    @ExcelProperty(value = "备注")
    private String remark;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    private Date createTime;
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/handle/CustomEncodingTypeHandler.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
package cn.shlanbao.qms.handle;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;
import org.apache.ibatis.type.TypeHandler;
@MappedJdbcTypes(JdbcType.VARCHAR)
@MappedTypes(String.class)
public class CustomEncodingTypeHandler implements TypeHandler<String> {
    @Override
    public void setParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
        // ä¸€èˆ¬ç”¨äºŽæ’入或更新操作,这里可能不需要特殊编码设置
        ps.setString(i, parameter);
    }
    @Override
    public String getResult(ResultSet rs, String columnName) throws SQLException {
        String value = rs.getString(columnName);
        try {
            // å‡è®¾æ•°æ®æ˜¯GB2312编码,将其转换为UTF - 8
            byte[] gb2312Bytes = value.getBytes("ISO-8859-1");
            return new String(gb2312Bytes, "GB2312");
        } catch (Exception e) {
            return value;
        }
    }
    @Override
    public String getResult(ResultSet rs, int columnIndex) throws SQLException {
        String value = rs.getString(columnIndex);
        try {
            // å‡è®¾æ•°æ®æ˜¯GB2312编码,将其转换为UTF - 8
            byte[] gb2312Bytes = value.getBytes("ISO-8859-1");
            return new String(gb2312Bytes, "GB2312");
        } catch (Exception e) {
            return value;
        }
    }
    @Override
    public String getResult(CallableStatement cs, int columnIndex) throws SQLException {
        String value = cs.getString(columnIndex);
        try {
            // å‡è®¾æ•°æ®æ˜¯GB2312编码,将其转换为UTF - 8
            byte[] gb2312Bytes = value.getBytes("ISO-8859-1");
            return new String(gb2312Bytes, "GB2312");
        } catch (Exception e) {
            return value;
        }
    }
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/mapper/LbBatchMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package cn.shlanbao.qms.mapper;
import cn.shlanbao.qms.domain.LbBatch;
import cn.shlanbao.qms.domain.vo.LbBatchVo;
import org.apache.ibatis.annotations.Select;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import java.util.List;
/**
 * æ‰¹æ¬¡ç®¡ç†Mapper接口
 *
 * @author bsw
 * @date 2024-12-12
 */
public interface LbBatchMapper extends BaseMapperPlus<LbBatch, LbBatchVo> {
    /**
     * æŸ¥è¯¢åˆ†ç»„去重后的所有产品型号
     *
     * @return äº§å“åž‹å·åˆ—表
     */
    @Select("SELECT DISTINCT prod_model FROM lb_batch")
    List<String> selectDistinctProductModels();
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/mapper/LbDeviceMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package cn.shlanbao.qms.mapper;
import cn.shlanbao.qms.domain.LbDevice;
import cn.shlanbao.qms.domain.vo.LbDeviceVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
 * æµ‹è¯•仪Mapper接口
 *
 * @author bsw
 * @date 2024-12-12
 */
public interface LbDeviceMapper extends BaseMapperPlus<LbDevice, LbDeviceVo> {
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/mapper/LbRetestResultMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package cn.shlanbao.qms.mapper;
import cn.shlanbao.qms.domain.LbRetestResult;
import cn.shlanbao.qms.domain.vo.LbRetestResultVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
 * å¤æµ‹è®°å½•Mapper接口
 *
 * @author Lion Li
 * @date 2025-03-10
 */
public interface LbRetestResultMapper extends BaseMapperPlus<LbRetestResult, LbRetestResultVo> {
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/mapper/LbSensorMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package cn.shlanbao.qms.mapper;
import cn.shlanbao.qms.domain.LbSensor;
import cn.shlanbao.qms.domain.vo.LbSensorVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
 * ä¼ æ„Ÿå™¨Mapper接口
 *
 * @author bsw
 * @date 2024-12-11
 */
public interface LbSensorMapper extends BaseMapperPlus<LbSensor, LbSensorVo> {
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/mapper/LbSensorResultMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package cn.shlanbao.qms.mapper;
import cn.shlanbao.qms.domain.LbSensorResult;
import cn.shlanbao.qms.domain.vo.LbSensorResultVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
 * æ‰¹æ¬¡æ˜Žç»†Mapper接口
 *
 * @author bsw
 * @date 2024-12-27
 */
public interface LbSensorResultMapper extends BaseMapperPlus<LbSensorResult, LbSensorResultVo> {
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/mapper/LbSensorRetestMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package cn.shlanbao.qms.mapper;
import cn.shlanbao.qms.domain.LbSensorRetest;
import cn.shlanbao.qms.domain.vo.LbSensorRetestVo;
import org.apache.ibatis.annotations.Select;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import java.util.List;
/**
 * å¤æµ‹è®°å½•Mapper接口
 *
 * @author bsw
 * @date 2025-03-10
 */
public interface LbSensorRetestMapper extends BaseMapperPlus<LbSensorRetest, LbSensorRetestVo> {
    /**
     * æ ¹æ®æ‰¹æ¬¡å·å’Œæµ‹è¯•号查询复测记录
     *
     * @param batchCode æ‰¹æ¬¡å·
     * @param testNum   æµ‹è¯•号
     * @return å¤æµ‹è®°å½•列表
     */
    @Select("select * from lb_sensor_retest where batch_code = #{batchCode} and test_num = #{testNum}")
    List<LbSensorRetestVo> selectRetestByBatchCodeAndTestNum(String batchCode, String testNum);
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/mapper/LbTestResultMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package cn.shlanbao.qms.mapper;
import cn.shlanbao.qms.domain.LbTestResult;
import cn.shlanbao.qms.domain.bo.LbTestResultBo;
import cn.shlanbao.qms.domain.vo.LbTestResultVo;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import java.util.List;
/**
 * æµ‹è¯•结果Mapper接口
 *
 * @author bsw
 * @date 2024-12-12
 */
public interface LbTestResultMapper extends BaseMapperPlus<LbTestResult, LbTestResultVo> {
    /**
     * æŸ¥è¯¢åˆ†ç»„去重后的所有测试项目
     *
     * @return æµ‹è¯•项目列表
     */
    @Select("SELECT DISTINCT test_item FROM lb_test_result")
    List<String> selectDistinctTestItems();
    /**
     * æ ¹æ®äº§å“åž‹å·ã€æ‰¹æ¬¡å·ã€æ£€æµ‹é¡¹ç›®å’Œ createTime æ—¶é—´æ®µæŸ¥è¯¢æµ‹è¯•结果
     *
     * @param bo æŸ¥è¯¢æ¡ä»¶
     * @return æµ‹è¯•结果列表
     */
    List<LbTestResultVo> selectByProdModelAndConditions(@Param("ew")LbTestResultBo bo);
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/ILbBatchService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
package cn.shlanbao.qms.service;
import cn.shlanbao.qms.domain.vo.LbBatchVo;
import cn.shlanbao.qms.domain.bo.LbBatchBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
 * æ‰¹æ¬¡ç®¡ç†Service接口
 *
 * @author bsw
 * @date 2024-12-12
 */
public interface ILbBatchService {
    /**
     * æŸ¥è¯¢æ‰¹æ¬¡ç®¡ç†
     *
     * @param id ä¸»é”®
     * @return æ‰¹æ¬¡ç®¡ç†
     */
    LbBatchVo queryById(Long id);
    /**
     * åˆ†é¡µæŸ¥è¯¢æ‰¹æ¬¡ç®¡ç†åˆ—表
     *
     * @param bo        æŸ¥è¯¢æ¡ä»¶
     * @param pageQuery åˆ†é¡µå‚æ•°
     * @return æ‰¹æ¬¡ç®¡ç†åˆ†é¡µåˆ—表
     */
    TableDataInfo<LbBatchVo> queryPageList(LbBatchBo bo, PageQuery pageQuery);
    /**
     * æŸ¥è¯¢ç¬¦åˆæ¡ä»¶çš„æ‰¹æ¬¡ç®¡ç†åˆ—表
     *
     * @param bo æŸ¥è¯¢æ¡ä»¶
     * @return æ‰¹æ¬¡ç®¡ç†åˆ—表
     */
    List<LbBatchVo> queryList(LbBatchBo bo);
    /**
     * æŸ¥è¯¢åˆ†ç»„去重后的所有产品型号
     *
     * @return äº§å“åž‹å·åˆ—表
     */
    List<String> queryDistinctProductModels();
    /**
     * æ–°å¢žæ‰¹æ¬¡ç®¡ç†
     *
     * @param bo æ‰¹æ¬¡ç®¡ç†
     * @return æ˜¯å¦æ–°å¢žæˆåŠŸ
     */
    Boolean insertByBo(LbBatchBo bo);
    /**
     * ä¿®æ”¹æ‰¹æ¬¡ç®¡ç†
     *
     * @param bo æ‰¹æ¬¡ç®¡ç†
     * @return æ˜¯å¦ä¿®æ”¹æˆåŠŸ
     */
    Boolean updateByBo(LbBatchBo bo);
    /**
     * æ ¡éªŒå¹¶æ‰¹é‡åˆ é™¤æ‰¹æ¬¡ç®¡ç†ä¿¡æ¯
     *
     * @param ids     å¾…删除的主键集合
     * @param isValid æ˜¯å¦è¿›è¡Œæœ‰æ•ˆæ€§æ ¡éªŒ
     * @return æ˜¯å¦åˆ é™¤æˆåŠŸ
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/ILbDeviceService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
package cn.shlanbao.qms.service;
import cn.shlanbao.qms.domain.vo.LbDeviceVo;
import cn.shlanbao.qms.domain.bo.LbDeviceBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
 * æµ‹è¯•仪Service接口
 *
 * @author bsw
 * @date 2024-12-12
 */
public interface ILbDeviceService {
    /**
     * æŸ¥è¯¢æµ‹è¯•仪
     *
     * @param id ä¸»é”®
     * @return æµ‹è¯•仪
     */
    LbDeviceVo queryById(Long id);
    /**
     * åˆ†é¡µæŸ¥è¯¢æµ‹è¯•仪列表
     *
     * @param bo        æŸ¥è¯¢æ¡ä»¶
     * @param pageQuery åˆ†é¡µå‚æ•°
     * @return æµ‹è¯•仪分页列表
     */
    TableDataInfo<LbDeviceVo> queryPageList(LbDeviceBo bo, PageQuery pageQuery);
    /**
     * æŸ¥è¯¢ç¬¦åˆæ¡ä»¶çš„æµ‹è¯•仪列表
     *
     * @param bo æŸ¥è¯¢æ¡ä»¶
     * @return æµ‹è¯•仪列表
     */
    List<LbDeviceVo> queryList(LbDeviceBo bo);
    /**
     * æ–°å¢žæµ‹è¯•仪
     *
     * @param bo æµ‹è¯•仪
     * @return æ˜¯å¦æ–°å¢žæˆåŠŸ
     */
    Boolean insertByBo(LbDeviceBo bo);
    /**
     * ä¿®æ”¹æµ‹è¯•仪
     *
     * @param bo æµ‹è¯•仪
     * @return æ˜¯å¦ä¿®æ”¹æˆåŠŸ
     */
    Boolean updateByBo(LbDeviceBo bo);
    /**
     * æ ¡éªŒå¹¶æ‰¹é‡åˆ é™¤æµ‹è¯•仪信息
     *
     * @param ids     å¾…删除的主键集合
     * @param isValid æ˜¯å¦è¿›è¡Œæœ‰æ•ˆæ€§æ ¡éªŒ
     * @return æ˜¯å¦åˆ é™¤æˆåŠŸ
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/ILbRetestResultService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
package cn.shlanbao.qms.service;
import cn.shlanbao.qms.domain.vo.LbRetestResultVo;
import cn.shlanbao.qms.domain.bo.LbRetestResultBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
 * å¤æµ‹è®°å½•Service接口
 *
 * @author Lion Li
 * @date 2025-03-10
 */
public interface ILbRetestResultService {
    /**
     * æŸ¥è¯¢å¤æµ‹è®°å½•
     *
     * @param batchCode ä¸»é”®
     * @return å¤æµ‹è®°å½•
     */
    LbRetestResultVo queryById(String batchCode);
    /**
     * åˆ†é¡µæŸ¥è¯¢å¤æµ‹è®°å½•列表
     *
     * @param bo        æŸ¥è¯¢æ¡ä»¶
     * @param pageQuery åˆ†é¡µå‚æ•°
     * @return å¤æµ‹è®°å½•分页列表
     */
    TableDataInfo<LbRetestResultVo> queryPageList(LbRetestResultBo bo, PageQuery pageQuery);
    /**
     * æŸ¥è¯¢ç¬¦åˆæ¡ä»¶çš„复测记录列表
     *
     * @param bo æŸ¥è¯¢æ¡ä»¶
     * @return å¤æµ‹è®°å½•列表
     */
    List<LbRetestResultVo> queryList(LbRetestResultBo bo);
    /**
     * æ–°å¢žå¤æµ‹è®°å½•
     *
     * @param bo å¤æµ‹è®°å½•
     * @return æ˜¯å¦æ–°å¢žæˆåŠŸ
     */
    Boolean insertByBo(LbRetestResultBo bo);
    /**
     * ä¿®æ”¹å¤æµ‹è®°å½•
     *
     * @param bo å¤æµ‹è®°å½•
     * @return æ˜¯å¦ä¿®æ”¹æˆåŠŸ
     */
    Boolean updateByBo(LbRetestResultBo bo);
    /**
     * æ ¡éªŒå¹¶æ‰¹é‡åˆ é™¤å¤æµ‹è®°å½•信息
     *
     * @param ids     å¾…删除的主键集合
     * @param isValid æ˜¯å¦è¿›è¡Œæœ‰æ•ˆæ€§æ ¡éªŒ
     * @return æ˜¯å¦åˆ é™¤æˆåŠŸ
     */
    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/ILbSensorResultService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
package cn.shlanbao.qms.service;
import cn.shlanbao.qms.domain.vo.LbSensorResultVo;
import cn.shlanbao.qms.domain.bo.LbSensorResultBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
 * æ‰¹æ¬¡æ˜Žç»†Service接口
 *
 * @author bsw
 * @date 2024-12-27
 */
public interface ILbSensorResultService {
    /**
     * æŸ¥è¯¢æ‰¹æ¬¡æ˜Žç»†
     *
     * @param batchCode ä¸»é”®
     * @return æ‰¹æ¬¡æ˜Žç»†
     */
    LbSensorResultVo queryById(String batchCode);
    /**
     * åˆ†é¡µæŸ¥è¯¢æ‰¹æ¬¡æ˜Žç»†åˆ—表
     *
     * @param bo        æŸ¥è¯¢æ¡ä»¶
     * @param pageQuery åˆ†é¡µå‚æ•°
     * @return æ‰¹æ¬¡æ˜Žç»†åˆ†é¡µåˆ—表
     */
    TableDataInfo<LbSensorResultVo> queryPageList(LbSensorResultBo bo, PageQuery pageQuery);
    /**
     * æŸ¥è¯¢ç¬¦åˆæ¡ä»¶çš„æ‰¹æ¬¡æ˜Žç»†åˆ—表
     *
     * @param bo æŸ¥è¯¢æ¡ä»¶
     * @return æ‰¹æ¬¡æ˜Žç»†åˆ—表
     */
    List<LbSensorResultVo> queryList(LbSensorResultBo bo);
    /**
     * æ–°å¢žæ‰¹æ¬¡æ˜Žç»†
     *
     * @param bo æ‰¹æ¬¡æ˜Žç»†
     * @return æ˜¯å¦æ–°å¢žæˆåŠŸ
     */
    Boolean insertByBo(LbSensorResultBo bo);
    /**
     * ä¿®æ”¹æ‰¹æ¬¡æ˜Žç»†
     *
     * @param bo æ‰¹æ¬¡æ˜Žç»†
     * @return æ˜¯å¦ä¿®æ”¹æˆåŠŸ
     */
    Boolean updateByBo(LbSensorResultBo bo);
    /**
     * æ ¡éªŒå¹¶æ‰¹é‡åˆ é™¤æ‰¹æ¬¡æ˜Žç»†ä¿¡æ¯
     *
     * @param ids     å¾…删除的主键集合
     * @param isValid æ˜¯å¦è¿›è¡Œæœ‰æ•ˆæ€§æ ¡éªŒ
     * @return æ˜¯å¦åˆ é™¤æˆåŠŸ
     */
    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/ILbSensorRetestService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
package cn.shlanbao.qms.service;
import cn.shlanbao.qms.domain.vo.LbSensorRetestVo;
import cn.shlanbao.qms.domain.bo.LbSensorRetestBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
 * å¤æµ‹è®°å½•Service接口
 *
 * @author bsw
 * @date 2025-03-10
 */
public interface ILbSensorRetestService {
    /**
     * æŸ¥è¯¢å¤æµ‹è®°å½•
     *
     * @param batchCode ä¸»é”®
     * @return å¤æµ‹è®°å½•
     */
    LbSensorRetestVo queryById(String batchCode);
    /**
     * åˆ†é¡µæŸ¥è¯¢å¤æµ‹è®°å½•列表
     *
     * @param bo        æŸ¥è¯¢æ¡ä»¶
     * @param pageQuery åˆ†é¡µå‚æ•°
     * @return å¤æµ‹è®°å½•分页列表
     */
    TableDataInfo<LbSensorRetestVo> queryPageList(LbSensorRetestBo bo, PageQuery pageQuery);
    /**
     * æŸ¥è¯¢ç¬¦åˆæ¡ä»¶çš„复测记录列表
     *
     * @param bo æŸ¥è¯¢æ¡ä»¶
     * @return å¤æµ‹è®°å½•列表
     */
    List<LbSensorRetestVo> queryList(LbSensorRetestBo bo);
    /**
     * æ–°å¢žå¤æµ‹è®°å½•
     *
     * @param bo å¤æµ‹è®°å½•
     * @return æ˜¯å¦æ–°å¢žæˆåŠŸ
     */
    Boolean insertByBo(LbSensorRetestBo bo);
    /**
     * ä¿®æ”¹å¤æµ‹è®°å½•
     *
     * @param bo å¤æµ‹è®°å½•
     * @return æ˜¯å¦ä¿®æ”¹æˆåŠŸ
     */
    Boolean updateByBo(LbSensorRetestBo bo);
    /**
     * æ ¡éªŒå¹¶æ‰¹é‡åˆ é™¤å¤æµ‹è®°å½•信息
     *
     * @param ids     å¾…删除的主键集合
     * @param isValid æ˜¯å¦è¿›è¡Œæœ‰æ•ˆæ€§æ ¡éªŒ
     * @return æ˜¯å¦åˆ é™¤æˆåŠŸ
     */
    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/ILbSensorService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
package cn.shlanbao.qms.service;
import cn.shlanbao.qms.domain.vo.LbSensorVo;
import cn.shlanbao.qms.domain.bo.LbSensorBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
 * ä¼ æ„Ÿå™¨Service接口
 *
 * @author bsw
 * @date 2024-12-11
 */
public interface ILbSensorService {
    /**
     * æŸ¥è¯¢ä¼ æ„Ÿå™¨
     *
     * @param prodId ä¸»é”®
     * @return ä¼ æ„Ÿå™¨
     */
    LbSensorVo queryById(Long prodId);
    /**
     * åˆ†é¡µæŸ¥è¯¢ä¼ æ„Ÿå™¨åˆ—表
     *
     * @param bo        æŸ¥è¯¢æ¡ä»¶
     * @param pageQuery åˆ†é¡µå‚æ•°
     * @return ä¼ æ„Ÿå™¨åˆ†é¡µåˆ—表
     */
    TableDataInfo<LbSensorVo> queryPageList(LbSensorBo bo, PageQuery pageQuery);
    /**
     * æŸ¥è¯¢ç¬¦åˆæ¡ä»¶çš„传感器列表
     *
     * @param bo æŸ¥è¯¢æ¡ä»¶
     * @return ä¼ æ„Ÿå™¨åˆ—表
     */
    List<LbSensorVo> queryList(LbSensorBo bo);
    /**
     * æ–°å¢žä¼ æ„Ÿå™¨
     *
     * @param bo ä¼ æ„Ÿå™¨
     * @return æ˜¯å¦æ–°å¢žæˆåŠŸ
     */
    Boolean insertByBo(LbSensorBo bo);
    /**
     * ä¿®æ”¹ä¼ æ„Ÿå™¨
     *
     * @param bo ä¼ æ„Ÿå™¨
     * @return æ˜¯å¦ä¿®æ”¹æˆåŠŸ
     */
    Boolean updateByBo(LbSensorBo bo);
    /**
     * æ ¡éªŒå¹¶æ‰¹é‡åˆ é™¤ä¼ æ„Ÿå™¨ä¿¡æ¯
     *
     * @param ids     å¾…删除的主键集合
     * @param isValid æ˜¯å¦è¿›è¡Œæœ‰æ•ˆæ€§æ ¡éªŒ
     * @return æ˜¯å¦åˆ é™¤æˆåŠŸ
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/ILbTestResultService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,76 @@
package cn.shlanbao.qms.service;
import cn.shlanbao.qms.domain.vo.LbTestResultVo;
import cn.shlanbao.qms.domain.bo.LbTestResultBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.Date;
import java.util.List;
/**
 * æµ‹è¯•结果Service接口
 *
 * @author bsw
 * @date 2024-12-12
 */
public interface ILbTestResultService {
    /**
     * æŸ¥è¯¢æµ‹è¯•结果
     *
     * @param id ä¸»é”®
     * @return æµ‹è¯•结果
     */
    LbTestResultVo queryById(Long id);
    /**
     * åˆ†é¡µæŸ¥è¯¢æµ‹è¯•结果列表
     *
     * @param bo        æŸ¥è¯¢æ¡ä»¶
     * @param pageQuery åˆ†é¡µå‚æ•°
     * @return æµ‹è¯•结果分页列表
     */
    TableDataInfo<LbTestResultVo> queryPageList(LbTestResultBo bo, PageQuery pageQuery);
    /**
     * æŸ¥è¯¢ç¬¦åˆæ¡ä»¶çš„æµ‹è¯•结果列表
     *
     * @param bo æŸ¥è¯¢æ¡ä»¶
     * @return æµ‹è¯•结果列表
     */
    List<LbTestResultVo> queryList(LbTestResultBo bo);
    /**
     * æŸ¥è¯¢åˆ†ç»„去重后的所有测试项目
     *
     * @return æµ‹è¯•项目列表
     */
    List<String> queryDistinctTestItems();
    /**
     * æ–°å¢žæµ‹è¯•结果
     *
     * @param bo æµ‹è¯•结果
     * @return æ˜¯å¦æ–°å¢žæˆåŠŸ
     */
    Boolean insertByBo(LbTestResultBo bo);
    /**
     * ä¿®æ”¹æµ‹è¯•结果
     *
     * @param bo æµ‹è¯•结果
     * @return æ˜¯å¦ä¿®æ”¹æˆåŠŸ
     */
    Boolean updateByBo(LbTestResultBo bo);
    /**
     * æ ¡éªŒå¹¶æ‰¹é‡åˆ é™¤æµ‹è¯•结果信息
     *
     * @param ids     å¾…删除的主键集合
     * @param isValid æ˜¯å¦è¿›è¡Œæœ‰æ•ˆæ€§æ ¡éªŒ
     * @return æ˜¯å¦åˆ é™¤æˆåŠŸ
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/impl/LbBatchServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,144 @@
package cn.shlanbao.qms.service.impl;
import cn.shlanbao.qms.service.ILbTestResultService;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import cn.shlanbao.qms.domain.bo.LbBatchBo;
import cn.shlanbao.qms.domain.vo.LbBatchVo;
import cn.shlanbao.qms.domain.LbBatch;
import cn.shlanbao.qms.mapper.LbBatchMapper;
import cn.shlanbao.qms.service.ILbBatchService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
 * æ‰¹æ¬¡ç®¡ç†Service业务层处理
 *
 * @author bsw
 * @date 2024-12-12
 */
@RequiredArgsConstructor
@Service
public class LbBatchServiceImpl implements ILbBatchService {
    private final LbBatchMapper baseMapper;
    private final ILbTestResultService testResultService;
    /**
     * æŸ¥è¯¢æ‰¹æ¬¡ç®¡ç†
     *
     * @param id ä¸»é”®
     * @return æ‰¹æ¬¡ç®¡ç†
     */
    @Override
    public LbBatchVo queryById(Long id){
        return baseMapper.selectVoById(id);
    }
    /**
     * åˆ†é¡µæŸ¥è¯¢æ‰¹æ¬¡ç®¡ç†åˆ—表
     *
     * @param bo        æŸ¥è¯¢æ¡ä»¶
     * @param pageQuery åˆ†é¡µå‚æ•°
     * @return æ‰¹æ¬¡ç®¡ç†åˆ†é¡µåˆ—表
     */
    @Override
    public TableDataInfo<LbBatchVo> queryPageList(LbBatchBo bo, PageQuery pageQuery) {
        LambdaQueryWrapper<LbBatch> lqw = buildQueryWrapper(bo);
        Page<LbBatchVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
        result.getRecords().forEach(item -> {
        });
        return TableDataInfo.build(result);
    }
    /**
     * æŸ¥è¯¢ç¬¦åˆæ¡ä»¶çš„æ‰¹æ¬¡ç®¡ç†åˆ—表
     *
     * @param bo æŸ¥è¯¢æ¡ä»¶
     * @return æ‰¹æ¬¡ç®¡ç†åˆ—表
     */
    @Override
    public List<LbBatchVo> queryList(LbBatchBo bo) {
        LambdaQueryWrapper<LbBatch> lqw = buildQueryWrapper(bo);
        return baseMapper.selectVoList(lqw);
    }
    private LambdaQueryWrapper<LbBatch> buildQueryWrapper(LbBatchBo bo) {
        Map<String, Object> params = bo.getParams();
        LambdaQueryWrapper<LbBatch> lqw = Wrappers.lambdaQuery();
        lqw.eq(StringUtils.isNotBlank(bo.getBatchCode()), LbBatch::getBatchCode, bo.getBatchCode());
        lqw.eq(StringUtils.isNotBlank(bo.getProdModel()), LbBatch::getProdModel, bo.getProdModel());
        lqw.eq(StringUtils.isNotBlank(bo.getDeviceCode()), LbBatch::getDeviceCode, bo.getDeviceCode());
        lqw.eq(bo.getUserId() != null, LbBatch::getUserId, bo.getUserId());
        lqw.eq(bo.getNum() != null, LbBatch::getNum, bo.getNum());
        return lqw;
    }
    /**
     * æ–°å¢žæ‰¹æ¬¡ç®¡ç†
     *
     * @param bo æ‰¹æ¬¡ç®¡ç†
     * @return æ˜¯å¦æ–°å¢žæˆåŠŸ
     */
    @Override
    public Boolean insertByBo(LbBatchBo bo) {
        LbBatch add = MapstructUtils.convert(bo, LbBatch.class);
        validEntityBeforeSave(add);
        boolean flag = baseMapper.insert(add) > 0;
        if (flag) {
            bo.setId(add.getId());
        }
        return flag;
    }
    /**
     * ä¿®æ”¹æ‰¹æ¬¡ç®¡ç†
     *
     * @param bo æ‰¹æ¬¡ç®¡ç†
     * @return æ˜¯å¦ä¿®æ”¹æˆåŠŸ
     */
    @Override
    public Boolean updateByBo(LbBatchBo bo) {
        LbBatch update = MapstructUtils.convert(bo, LbBatch.class);
        validEntityBeforeSave(update);
        return baseMapper.updateById(update) > 0;
    }
    /**
     * ä¿å­˜å‰çš„æ•°æ®æ ¡éªŒ
     */
    private void validEntityBeforeSave(LbBatch entity){
        //TODO åšä¸€äº›æ•°æ®æ ¡éªŒ,如唯一约束
    }
    /**
     * æ ¡éªŒå¹¶æ‰¹é‡åˆ é™¤æ‰¹æ¬¡ç®¡ç†ä¿¡æ¯
     *
     * @param ids     å¾…删除的主键集合
     * @param isValid æ˜¯å¦è¿›è¡Œæœ‰æ•ˆæ€§æ ¡éªŒ
     * @return æ˜¯å¦åˆ é™¤æˆåŠŸ
     */
    @Override
    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
        if(isValid){
            //TODO åšä¸€äº›ä¸šåŠ¡ä¸Šçš„æ ¡éªŒ,判断是否需要校验
        }
        return baseMapper.deleteByIds(ids) > 0;
    }
    @Override
    public List<String> queryDistinctProductModels() {
        return baseMapper.selectDistinctProductModels();
    }
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/impl/LbDeviceServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,133 @@
package cn.shlanbao.qms.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import cn.shlanbao.qms.domain.bo.LbDeviceBo;
import cn.shlanbao.qms.domain.vo.LbDeviceVo;
import cn.shlanbao.qms.domain.LbDevice;
import cn.shlanbao.qms.mapper.LbDeviceMapper;
import cn.shlanbao.qms.service.ILbDeviceService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
 * æµ‹è¯•仪Service业务层处理
 *
 * @author bsw
 * @date 2024-12-12
 */
@RequiredArgsConstructor
@Service
public class LbDeviceServiceImpl implements ILbDeviceService {
    private final LbDeviceMapper baseMapper;
    /**
     * æŸ¥è¯¢æµ‹è¯•仪
     *
     * @param id ä¸»é”®
     * @return æµ‹è¯•仪
     */
    @Override
    public LbDeviceVo queryById(Long id){
        return baseMapper.selectVoById(id);
    }
    /**
     * åˆ†é¡µæŸ¥è¯¢æµ‹è¯•仪列表
     *
     * @param bo        æŸ¥è¯¢æ¡ä»¶
     * @param pageQuery åˆ†é¡µå‚æ•°
     * @return æµ‹è¯•仪分页列表
     */
    @Override
    public TableDataInfo<LbDeviceVo> queryPageList(LbDeviceBo bo, PageQuery pageQuery) {
        LambdaQueryWrapper<LbDevice> lqw = buildQueryWrapper(bo);
        Page<LbDeviceVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
        return TableDataInfo.build(result);
    }
    /**
     * æŸ¥è¯¢ç¬¦åˆæ¡ä»¶çš„æµ‹è¯•仪列表
     *
     * @param bo æŸ¥è¯¢æ¡ä»¶
     * @return æµ‹è¯•仪列表
     */
    @Override
    public List<LbDeviceVo> queryList(LbDeviceBo bo) {
        LambdaQueryWrapper<LbDevice> lqw = buildQueryWrapper(bo);
        return baseMapper.selectVoList(lqw);
    }
    private LambdaQueryWrapper<LbDevice> buildQueryWrapper(LbDeviceBo bo) {
        Map<String, Object> params = bo.getParams();
        LambdaQueryWrapper<LbDevice> lqw = Wrappers.lambdaQuery();
        lqw.eq(StringUtils.isNotBlank(bo.getDeviceType()), LbDevice::getDeviceType, bo.getDeviceType());
        lqw.eq(StringUtils.isNotBlank(bo.getDeviceCode()), LbDevice::getDeviceCode, bo.getDeviceCode());
        lqw.eq(StringUtils.isNotBlank(bo.getDeviceGroup()), LbDevice::getDeviceGroup, bo.getDeviceGroup());
        lqw.eq(StringUtils.isNotBlank(bo.getDeviceDept()), LbDevice::getDeviceDept, bo.getDeviceDept());
        lqw.eq(StringUtils.isNotBlank(bo.getDeviceStation()), LbDevice::getDeviceStation, bo.getDeviceStation());
        return lqw;
    }
    /**
     * æ–°å¢žæµ‹è¯•仪
     *
     * @param bo æµ‹è¯•仪
     * @return æ˜¯å¦æ–°å¢žæˆåŠŸ
     */
    @Override
    public Boolean insertByBo(LbDeviceBo bo) {
        LbDevice add = MapstructUtils.convert(bo, LbDevice.class);
        validEntityBeforeSave(add);
        boolean flag = baseMapper.insert(add) > 0;
        if (flag) {
            bo.setId(add.getId());
        }
        return flag;
    }
    /**
     * ä¿®æ”¹æµ‹è¯•仪
     *
     * @param bo æµ‹è¯•仪
     * @return æ˜¯å¦ä¿®æ”¹æˆåŠŸ
     */
    @Override
    public Boolean updateByBo(LbDeviceBo bo) {
        LbDevice update = MapstructUtils.convert(bo, LbDevice.class);
        validEntityBeforeSave(update);
        return baseMapper.updateById(update) > 0;
    }
    /**
     * ä¿å­˜å‰çš„æ•°æ®æ ¡éªŒ
     */
    private void validEntityBeforeSave(LbDevice entity){
        //TODO åšä¸€äº›æ•°æ®æ ¡éªŒ,如唯一约束
    }
    /**
     * æ ¡éªŒå¹¶æ‰¹é‡åˆ é™¤æµ‹è¯•仪信息
     *
     * @param ids     å¾…删除的主键集合
     * @param isValid æ˜¯å¦è¿›è¡Œæœ‰æ•ˆæ€§æ ¡éªŒ
     * @return æ˜¯å¦åˆ é™¤æˆåŠŸ
     */
    @Override
    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
        if(isValid){
            //TODO åšä¸€äº›ä¸šåŠ¡ä¸Šçš„æ ¡éªŒ,判断是否需要校验
        }
        return baseMapper.deleteByIds(ids) > 0;
    }
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/impl/LbRetestResultServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,134 @@
package cn.shlanbao.qms.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import cn.shlanbao.qms.domain.bo.LbRetestResultBo;
import cn.shlanbao.qms.domain.vo.LbRetestResultVo;
import cn.shlanbao.qms.domain.LbRetestResult;
import cn.shlanbao.qms.mapper.LbRetestResultMapper;
import cn.shlanbao.qms.service.ILbRetestResultService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
 * å¤æµ‹è®°å½•Service业务层处理
 *
 * @author Lion Li
 * @date 2025-03-10
 */
@RequiredArgsConstructor
@Service
public class LbRetestResultServiceImpl implements ILbRetestResultService {
    private final LbRetestResultMapper baseMapper;
    /**
     * æŸ¥è¯¢å¤æµ‹è®°å½•
     *
     * @param batchCode ä¸»é”®
     * @return å¤æµ‹è®°å½•
     */
    @Override
    public LbRetestResultVo queryById(String batchCode){
        return baseMapper.selectVoById(batchCode);
    }
    /**
     * åˆ†é¡µæŸ¥è¯¢å¤æµ‹è®°å½•列表
     *
     * @param bo        æŸ¥è¯¢æ¡ä»¶
     * @param pageQuery åˆ†é¡µå‚æ•°
     * @return å¤æµ‹è®°å½•分页列表
     */
    @Override
    public TableDataInfo<LbRetestResultVo> queryPageList(LbRetestResultBo bo, PageQuery pageQuery) {
        LambdaQueryWrapper<LbRetestResult> lqw = buildQueryWrapper(bo);
        Page<LbRetestResultVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
        return TableDataInfo.build(result);
    }
    /**
     * æŸ¥è¯¢ç¬¦åˆæ¡ä»¶çš„复测记录列表
     *
     * @param bo æŸ¥è¯¢æ¡ä»¶
     * @return å¤æµ‹è®°å½•列表
     */
    @Override
    public List<LbRetestResultVo> queryList(LbRetestResultBo bo) {
        LambdaQueryWrapper<LbRetestResult> lqw = buildQueryWrapper(bo);
        return baseMapper.selectVoList(lqw);
    }
    private LambdaQueryWrapper<LbRetestResult> buildQueryWrapper(LbRetestResultBo bo) {
        Map<String, Object> params = bo.getParams();
        LambdaQueryWrapper<LbRetestResult> lqw = Wrappers.lambdaQuery();
        lqw.eq(StringUtils.isNotBlank(bo.getBatchCode()), LbRetestResult::getBatchCode, bo.getBatchCode());
        lqw.eq(StringUtils.isNotBlank(bo.getTestNum()), LbRetestResult::getTestNum, bo.getTestNum());
        lqw.eq(StringUtils.isNotBlank(bo.getTestItem()), LbRetestResult::getTestItem, bo.getTestItem());
        lqw.eq(StringUtils.isNotBlank(bo.getRetestNum()), LbRetestResult::getRetestNum, bo.getRetestNum());
        lqw.eq(StringUtils.isNotBlank(bo.getDeviceCode()), LbRetestResult::getDeviceCode, bo.getDeviceCode());
        lqw.like(StringUtils.isNotBlank(bo.getUserName()), LbRetestResult::getUserName, bo.getUserName());
        return lqw;
    }
    /**
     * æ–°å¢žå¤æµ‹è®°å½•
     *
     * @param bo å¤æµ‹è®°å½•
     * @return æ˜¯å¦æ–°å¢žæˆåŠŸ
     */
    @Override
    public Boolean insertByBo(LbRetestResultBo bo) {
        LbRetestResult add = MapstructUtils.convert(bo, LbRetestResult.class);
        validEntityBeforeSave(add);
        boolean flag = baseMapper.insert(add) > 0;
        if (flag) {
            bo.setBatchCode(add.getBatchCode());
        }
        return flag;
    }
    /**
     * ä¿®æ”¹å¤æµ‹è®°å½•
     *
     * @param bo å¤æµ‹è®°å½•
     * @return æ˜¯å¦ä¿®æ”¹æˆåŠŸ
     */
    @Override
    public Boolean updateByBo(LbRetestResultBo bo) {
        LbRetestResult update = MapstructUtils.convert(bo, LbRetestResult.class);
        validEntityBeforeSave(update);
        return baseMapper.updateById(update) > 0;
    }
    /**
     * ä¿å­˜å‰çš„æ•°æ®æ ¡éªŒ
     */
    private void validEntityBeforeSave(LbRetestResult entity){
        //TODO åšä¸€äº›æ•°æ®æ ¡éªŒ,如唯一约束
    }
    /**
     * æ ¡éªŒå¹¶æ‰¹é‡åˆ é™¤å¤æµ‹è®°å½•信息
     *
     * @param ids     å¾…删除的主键集合
     * @param isValid æ˜¯å¦è¿›è¡Œæœ‰æ•ˆæ€§æ ¡éªŒ
     * @return æ˜¯å¦åˆ é™¤æˆåŠŸ
     */
    @Override
    public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
        if(isValid){
            //TODO åšä¸€äº›ä¸šåŠ¡ä¸Šçš„æ ¡éªŒ,判断是否需要校验
        }
        return baseMapper.deleteByIds(ids) > 0;
    }
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/impl/LbSensorResultServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,158 @@
package cn.shlanbao.qms.service.impl;
import cn.shlanbao.qms.domain.LbSensorRetest;
import cn.shlanbao.qms.domain.vo.LbRetestResultVo;
import cn.shlanbao.qms.domain.vo.LbSensorRetestVo;
import cn.shlanbao.qms.mapper.LbSensorRetestMapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import cn.shlanbao.qms.domain.bo.LbSensorResultBo;
import cn.shlanbao.qms.domain.vo.LbSensorResultVo;
import cn.shlanbao.qms.domain.LbSensorResult;
import cn.shlanbao.qms.mapper.LbSensorResultMapper;
import cn.shlanbao.qms.service.ILbSensorResultService;
import java.util.*;
/**
 * æ‰¹æ¬¡æ˜Žç»†Service业务层处理
 *
 * @author bsw
 * @date 2024-12-27
 */
@RequiredArgsConstructor
@Service
public class LbSensorResultServiceImpl implements ILbSensorResultService {
    private final LbSensorResultMapper baseMapper;
    private final LbSensorRetestMapper retestBaseMapper;
    /**
     * æŸ¥è¯¢æ‰¹æ¬¡æ˜Žç»†
     *
     * @param batchCode ä¸»é”®
     * @return æ‰¹æ¬¡æ˜Žç»†
     */
    @Override
    public LbSensorResultVo queryById(String batchCode){
        return baseMapper.selectVoById(batchCode);
    }
    @Override
    public TableDataInfo<LbSensorResultVo> queryPageList(LbSensorResultBo bo, PageQuery pageQuery) {
        LambdaQueryWrapper<LbSensorResult> lqw = buildQueryWrapper(bo);
        Page<LbSensorResultVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
        List<LbSensorResultVo> records = result.getRecords();
        queryReTest(records);
        return TableDataInfo.build(result);
    }
    private void queryReTest(List<LbSensorResultVo> records) {
        records.forEach(record -> {
            // åˆ›å»ºå­å…ƒç´ åˆ—表
            List<LbSensorResultVo> children = new ArrayList<>();
            List<LbSensorRetestVo> retestRecords = retestBaseMapper.selectRetestByBatchCodeAndTestNum(record.getBatchCode(), record.getTestNum());
            retestRecords.forEach(retestRecord -> {
                retestRecord.setBatchCode(retestRecord.getBatchCode()+"-"+retestRecord.getRetestNum());
                //retestRecord.setTestNum(retestRecord.getRetestNum()); // ç”¨retestNum代替testNum
                LbSensorResultVo vo = new LbSensorResultVo();
                // å°†retestRecord的属性值拷贝到LbSensorResultVo
                BeanUtils.copyProperties(retestRecord, vo);
                children.add(vo);
            });
            record.setChildren(retestRecords);
        });
    }
    /**
     * æŸ¥è¯¢ç¬¦åˆæ¡ä»¶çš„æ‰¹æ¬¡æ˜Žç»†åˆ—表
     *
     * @param bo æŸ¥è¯¢æ¡ä»¶
     * @return æ‰¹æ¬¡æ˜Žç»†åˆ—表
     */
    @Override
    public List<LbSensorResultVo> queryList(LbSensorResultBo bo) {
        LambdaQueryWrapper<LbSensorResult> lqw = buildQueryWrapper(bo);
        List<LbSensorResultVo> records = baseMapper.selectVoList(lqw);
        // æŸ¥è¯¢å¤æµ‹æ•°æ®å¹¶æŒ‚载到对应的原始数据下
        queryReTest(records);
        return records;
    }
    private LambdaQueryWrapper<LbSensorResult> buildQueryWrapper(LbSensorResultBo bo) {
        Map<String, Object> params = bo.getParams();
        LambdaQueryWrapper<LbSensorResult> lqw = Wrappers.lambdaQuery();
        lqw.eq(StringUtils.isNotBlank(bo.getJudgeResult()), LbSensorResult::getJudgeResult, bo.getJudgeResult());
        lqw.eq(StringUtils.isNotBlank(bo.getBatchCode()), LbSensorResult::getBatchCode, bo.getBatchCode());
        lqw.eq(StringUtils.isNotBlank(bo.getTestNum()), LbSensorResult::getTestNum, bo.getTestNum());
        lqw.eq(bo.getTotalCount() != null, LbSensorResult::getTotalCount, bo.getTotalCount());
        lqw.eq(bo.getOkCount() != null, LbSensorResult::getOkCount, bo.getOkCount());
        lqw.eq(bo.getNgCount() != null, LbSensorResult::getNgCount, bo.getNgCount());
        return lqw;
    }
    /**
     * æ–°å¢žæ‰¹æ¬¡æ˜Žç»†
     *
     * @param bo æ‰¹æ¬¡æ˜Žç»†
     * @return æ˜¯å¦æ–°å¢žæˆåŠŸ
     */
    @Override
    public Boolean insertByBo(LbSensorResultBo bo) {
        LbSensorResult add = MapstructUtils.convert(bo, LbSensorResult.class);
        validEntityBeforeSave(add);
        boolean flag = baseMapper.insert(add) > 0;
        if (flag) {
            bo.setBatchCode(add.getBatchCode());
        }
        return flag;
    }
    /**
     * ä¿®æ”¹æ‰¹æ¬¡æ˜Žç»†
     *
     * @param bo æ‰¹æ¬¡æ˜Žç»†
     * @return æ˜¯å¦ä¿®æ”¹æˆåŠŸ
     */
    @Override
    public Boolean updateByBo(LbSensorResultBo bo) {
        LbSensorResult update = MapstructUtils.convert(bo, LbSensorResult.class);
        validEntityBeforeSave(update);
        return baseMapper.updateById(update) > 0;
    }
    /**
     * ä¿å­˜å‰çš„æ•°æ®æ ¡éªŒ
     */
    private void validEntityBeforeSave(LbSensorResult entity){
        //TODO åšä¸€äº›æ•°æ®æ ¡éªŒ,如唯一约束
    }
    /**
     * æ ¡éªŒå¹¶æ‰¹é‡åˆ é™¤æ‰¹æ¬¡æ˜Žç»†ä¿¡æ¯
     *
     * @param ids     å¾…删除的主键集合
     * @param isValid æ˜¯å¦è¿›è¡Œæœ‰æ•ˆæ€§æ ¡éªŒ
     * @return æ˜¯å¦åˆ é™¤æˆåŠŸ
     */
    @Override
    public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
        if(isValid){
            //TODO åšä¸€äº›ä¸šåŠ¡ä¸Šçš„æ ¡éªŒ,判断是否需要校验
        }
        return baseMapper.deleteByIds(ids) > 0;
    }
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/impl/LbSensorRetestServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,133 @@
package cn.shlanbao.qms.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import cn.shlanbao.qms.domain.bo.LbSensorRetestBo;
import cn.shlanbao.qms.domain.vo.LbSensorRetestVo;
import cn.shlanbao.qms.domain.LbSensorRetest;
import cn.shlanbao.qms.mapper.LbSensorRetestMapper;
import cn.shlanbao.qms.service.ILbSensorRetestService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
 * å¤æµ‹è®°å½•Service业务层处理
 *
 * @author bsw
 * @date 2025-03-10
 */
@RequiredArgsConstructor
@Service
public class LbSensorRetestServiceImpl implements ILbSensorRetestService {
    private final LbSensorRetestMapper baseMapper;
    /**
     * æŸ¥è¯¢å¤æµ‹è®°å½•
     *
     * @param batchCode ä¸»é”®
     * @return å¤æµ‹è®°å½•
     */
    @Override
    public LbSensorRetestVo queryById(String batchCode){
        return baseMapper.selectVoById(batchCode);
    }
    /**
     * åˆ†é¡µæŸ¥è¯¢å¤æµ‹è®°å½•列表
     *
     * @param bo        æŸ¥è¯¢æ¡ä»¶
     * @param pageQuery åˆ†é¡µå‚æ•°
     * @return å¤æµ‹è®°å½•分页列表
     */
    @Override
    public TableDataInfo<LbSensorRetestVo> queryPageList(LbSensorRetestBo bo, PageQuery pageQuery) {
        LambdaQueryWrapper<LbSensorRetest> lqw = buildQueryWrapper(bo);
        Page<LbSensorRetestVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
        return TableDataInfo.build(result);
    }
    /**
     * æŸ¥è¯¢ç¬¦åˆæ¡ä»¶çš„复测记录列表
     *
     * @param bo æŸ¥è¯¢æ¡ä»¶
     * @return å¤æµ‹è®°å½•列表
     */
    @Override
    public List<LbSensorRetestVo> queryList(LbSensorRetestBo bo) {
        LambdaQueryWrapper<LbSensorRetest> lqw = buildQueryWrapper(bo);
        return baseMapper.selectVoList(lqw);
    }
    private LambdaQueryWrapper<LbSensorRetest> buildQueryWrapper(LbSensorRetestBo bo) {
        Map<String, Object> params = bo.getParams();
        LambdaQueryWrapper<LbSensorRetest> lqw = Wrappers.lambdaQuery();
        lqw.eq(StringUtils.isNotBlank(bo.getBatchCode()), LbSensorRetest::getBatchCode, bo.getBatchCode());
        lqw.eq(StringUtils.isNotBlank(bo.getTestNum()), LbSensorRetest::getTestNum, bo.getTestNum());
        lqw.eq(StringUtils.isNotBlank(bo.getRetestNum()), LbSensorRetest::getRetestNum, bo.getRetestNum());
        lqw.eq(StringUtils.isNotBlank(bo.getDeviceCode()), LbSensorRetest::getDeviceCode, bo.getDeviceCode());
        lqw.like(StringUtils.isNotBlank(bo.getUserName()), LbSensorRetest::getUserName, bo.getUserName());
        return lqw;
    }
    /**
     * æ–°å¢žå¤æµ‹è®°å½•
     *
     * @param bo å¤æµ‹è®°å½•
     * @return æ˜¯å¦æ–°å¢žæˆåŠŸ
     */
    @Override
    public Boolean insertByBo(LbSensorRetestBo bo) {
        LbSensorRetest add = MapstructUtils.convert(bo, LbSensorRetest.class);
        validEntityBeforeSave(add);
        boolean flag = baseMapper.insert(add) > 0;
        if (flag) {
            bo.setBatchCode(add.getBatchCode());
        }
        return flag;
    }
    /**
     * ä¿®æ”¹å¤æµ‹è®°å½•
     *
     * @param bo å¤æµ‹è®°å½•
     * @return æ˜¯å¦ä¿®æ”¹æˆåŠŸ
     */
    @Override
    public Boolean updateByBo(LbSensorRetestBo bo) {
        LbSensorRetest update = MapstructUtils.convert(bo, LbSensorRetest.class);
        validEntityBeforeSave(update);
        return baseMapper.updateById(update) > 0;
    }
    /**
     * ä¿å­˜å‰çš„æ•°æ®æ ¡éªŒ
     */
    private void validEntityBeforeSave(LbSensorRetest entity){
        //TODO åšä¸€äº›æ•°æ®æ ¡éªŒ,如唯一约束
    }
    /**
     * æ ¡éªŒå¹¶æ‰¹é‡åˆ é™¤å¤æµ‹è®°å½•信息
     *
     * @param ids     å¾…删除的主键集合
     * @param isValid æ˜¯å¦è¿›è¡Œæœ‰æ•ˆæ€§æ ¡éªŒ
     * @return æ˜¯å¦åˆ é™¤æˆåŠŸ
     */
    @Override
    public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
        if(isValid){
            //TODO åšä¸€äº›ä¸šåŠ¡ä¸Šçš„æ ¡éªŒ,判断是否需要校验
        }
        return baseMapper.deleteByIds(ids) > 0;
    }
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/impl/LbSensorServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,129 @@
package cn.shlanbao.qms.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import cn.shlanbao.qms.domain.bo.LbSensorBo;
import cn.shlanbao.qms.domain.vo.LbSensorVo;
import cn.shlanbao.qms.domain.LbSensor;
import cn.shlanbao.qms.mapper.LbSensorMapper;
import cn.shlanbao.qms.service.ILbSensorService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
 * ä¼ æ„Ÿå™¨Service业务层处理
 *
 * @author bsw
 * @date 2024-12-11
 */
@RequiredArgsConstructor
@Service
public class LbSensorServiceImpl implements ILbSensorService {
    private final LbSensorMapper baseMapper;
    /**
     * æŸ¥è¯¢ä¼ æ„Ÿå™¨
     *
     * @param prodId ä¸»é”®
     * @return ä¼ æ„Ÿå™¨
     */
    @Override
    public LbSensorVo queryById(Long prodId){
        return baseMapper.selectVoById(prodId);
    }
    /**
     * åˆ†é¡µæŸ¥è¯¢ä¼ æ„Ÿå™¨åˆ—表
     *
     * @param bo        æŸ¥è¯¢æ¡ä»¶
     * @param pageQuery åˆ†é¡µå‚æ•°
     * @return ä¼ æ„Ÿå™¨åˆ†é¡µåˆ—表
     */
    @Override
    public TableDataInfo<LbSensorVo> queryPageList(LbSensorBo bo, PageQuery pageQuery) {
        LambdaQueryWrapper<LbSensor> lqw = buildQueryWrapper(bo);
        Page<LbSensorVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
        return TableDataInfo.build(result);
    }
    /**
     * æŸ¥è¯¢ç¬¦åˆæ¡ä»¶çš„传感器列表
     *
     * @param bo æŸ¥è¯¢æ¡ä»¶
     * @return ä¼ æ„Ÿå™¨åˆ—表
     */
    @Override
    public List<LbSensorVo> queryList(LbSensorBo bo) {
        LambdaQueryWrapper<LbSensor> lqw = buildQueryWrapper(bo);
        return baseMapper.selectVoList(lqw);
    }
    private LambdaQueryWrapper<LbSensor> buildQueryWrapper(LbSensorBo bo) {
        Map<String, Object> params = bo.getParams();
        LambdaQueryWrapper<LbSensor> lqw = Wrappers.lambdaQuery();
        lqw.eq(StringUtils.isNotBlank(bo.getProdModel()), LbSensor::getProdModel, bo.getProdModel());
        return lqw;
    }
    /**
     * æ–°å¢žä¼ æ„Ÿå™¨
     *
     * @param bo ä¼ æ„Ÿå™¨
     * @return æ˜¯å¦æ–°å¢žæˆåŠŸ
     */
    @Override
    public Boolean insertByBo(LbSensorBo bo) {
        LbSensor add = MapstructUtils.convert(bo, LbSensor.class);
        validEntityBeforeSave(add);
        boolean flag = baseMapper.insert(add) > 0;
        if (flag) {
            bo.setProdId(add.getProdId());
        }
        return flag;
    }
    /**
     * ä¿®æ”¹ä¼ æ„Ÿå™¨
     *
     * @param bo ä¼ æ„Ÿå™¨
     * @return æ˜¯å¦ä¿®æ”¹æˆåŠŸ
     */
    @Override
    public Boolean updateByBo(LbSensorBo bo) {
        LbSensor update = MapstructUtils.convert(bo, LbSensor.class);
        validEntityBeforeSave(update);
        return baseMapper.updateById(update) > 0;
    }
    /**
     * ä¿å­˜å‰çš„æ•°æ®æ ¡éªŒ
     */
    private void validEntityBeforeSave(LbSensor entity){
        //TODO åšä¸€äº›æ•°æ®æ ¡éªŒ,如唯一约束
    }
    /**
     * æ ¡éªŒå¹¶æ‰¹é‡åˆ é™¤ä¼ æ„Ÿå™¨ä¿¡æ¯
     *
     * @param ids     å¾…删除的主键集合
     * @param isValid æ˜¯å¦è¿›è¡Œæœ‰æ•ˆæ€§æ ¡éªŒ
     * @return æ˜¯å¦åˆ é™¤æˆåŠŸ
     */
    @Override
    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
        if(isValid){
            //TODO åšä¸€äº›ä¸šåŠ¡ä¸Šçš„æ ¡éªŒ,判断是否需要校验
        }
        return baseMapper.deleteByIds(ids) > 0;
    }
}
ruoyi-modules/lb-qms/src/main/java/cn/shlanbao/qms/service/impl/LbTestResultServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,177 @@
package cn.shlanbao.qms.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import cn.shlanbao.qms.domain.bo.LbTestResultBo;
import cn.shlanbao.qms.domain.vo.LbTestResultVo;
import cn.shlanbao.qms.domain.LbTestResult;
import cn.shlanbao.qms.mapper.LbTestResultMapper;
import cn.shlanbao.qms.service.ILbTestResultService;
import java.util.*;
/**
 * æµ‹è¯•结果Service业务层处理
 *
 * @author bsw
 * @date 2024-12-12
 */
@RequiredArgsConstructor
@Service
public class LbTestResultServiceImpl implements ILbTestResultService {
    private final LbTestResultMapper baseMapper;
    /**
     * æŸ¥è¯¢æµ‹è¯•结果
     *
     * @param id ä¸»é”®
     * @return æµ‹è¯•结果
     */
    @Override
    public LbTestResultVo queryById(Long id){
        return baseMapper.selectVoById(id);
    }
    /**
     * åˆ†é¡µæŸ¥è¯¢æµ‹è¯•结果列表
     *
     * @param bo        æŸ¥è¯¢æ¡ä»¶
     * @param pageQuery åˆ†é¡µå‚æ•°
     * @return æµ‹è¯•结果分页列表
     */
    @Override
    public TableDataInfo<LbTestResultVo> queryPageList(LbTestResultBo bo, PageQuery pageQuery) {
        LambdaQueryWrapper<LbTestResult> lqw = buildQueryWrapper(bo);
        Page<LbTestResultVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
        result.getRecords().forEach(row -> {
            // å°† GB2312 ç¼–码转换成UTF-8
//            try {
//                // String utf8 = new String(row.getJudgeDetail().getBytes(), "UTF-8");
//                byte[] gb2312s = row.getTestItem().getBytes("ISO-8859-1");
//                String gb2312 = new String(gb2312s, "gb2312");
//                row.setTestItem(gb2312);
//                row.setJudgeDetail(new String(row.getJudgeDetail().getBytes("ISO-8859-1"),"GB2312"));
//            } catch (UnsupportedEncodingException e) {
//                throw new RuntimeException(e);
//            }
        });
        return TableDataInfo.build(result);
    }
    /**
     * æŸ¥è¯¢ç¬¦åˆæ¡ä»¶çš„æµ‹è¯•结果列表
     *
     * @param bo æŸ¥è¯¢æ¡ä»¶
     * @return æµ‹è¯•结果列表
     */
    @Override
    public List<LbTestResultVo> queryList(LbTestResultBo bo) {
        if (StringUtils.isNotBlank(bo.getProdModel())) {
            return baseMapper.selectByProdModelAndConditions(bo);
        } else {
            LambdaQueryWrapper<LbTestResult> lqw = buildQueryWrapper(bo);
            return baseMapper.selectVoList(lqw);
        }
    }
    /**
     * æŸ¥è¯¢åˆ†ç»„去重后的所有测试项目
     *
     * @return æµ‹è¯•项目列表
     */
    @Override
    public List<String> queryDistinctTestItems() {
        return baseMapper.selectDistinctTestItems();
    }
    private LambdaQueryWrapper<LbTestResult> buildQueryWrapper(LbTestResultBo bo) {
        Map<String, Object> params = bo.getParams();
        LambdaQueryWrapper<LbTestResult> lqw = Wrappers.lambdaQuery();
        lqw.eq(StringUtils.isNotBlank(bo.getBatchCode()), LbTestResult::getBatchCode, bo.getBatchCode());
        lqw.eq(StringUtils.isNotBlank(bo.getTestNum()), LbTestResult::getTestNum, bo.getTestNum());
        // ä¿®æ”¹ï¼šå¤„理 testItem å¯èƒ½æ˜¯é€—号分隔的字符串
        if (StringUtils.isNotBlank(bo.getTestItem())) {
            if (bo.getTestItem().contains(",")) {
                lqw.in(LbTestResult::getTestItem, Arrays.asList(bo.getTestItem().split(",")));
            } else {
                lqw.eq(LbTestResult::getTestItem, bo.getTestItem());
            }
        }
        lqw.eq(bo.getVoltage() != null, LbTestResult::getVoltage, bo.getVoltage());
        lqw.eq(bo.getLoadCurrent() != null, LbTestResult::getLoadCurrent, bo.getLoadCurrent());
        lqw.eq(bo.getStdDistance() != null, LbTestResult::getStdDistance, bo.getStdDistance());
        lqw.eq(StringUtils.isNotBlank(bo.getInductor()), LbTestResult::getInductor, bo.getInductor());
        lqw.eq(StringUtils.isNotBlank(bo.getOutput()), LbTestResult::getOutput, bo.getOutput());
        lqw.eq(bo.getTestValue() != null, LbTestResult::getTestValue, bo.getTestValue());
        lqw.eq(StringUtils.isNotBlank(bo.getJudgeDetail()), LbTestResult::getJudgeDetail, bo.getJudgeDetail());
        lqw.eq(StringUtils.isNotBlank(bo.getTestResult()), LbTestResult::getTestResult, bo.getTestResult());
        lqw.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null,
                LbTestResult::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime"));
        lqw.orderByAsc(LbTestResult::getCreateTime);
        return lqw;
    }
    /**
     * æ–°å¢žæµ‹è¯•结果
     *
     * @param bo æµ‹è¯•结果
     * @return æ˜¯å¦æ–°å¢žæˆåŠŸ
     */
    @Override
    public Boolean insertByBo(LbTestResultBo bo) {
        LbTestResult add = MapstructUtils.convert(bo, LbTestResult.class);
        validEntityBeforeSave(add);
        boolean flag = baseMapper.insert(add) > 0;
        if (flag) {
            bo.setId(add.getId());
        }
        return flag;
    }
    /**
     * ä¿®æ”¹æµ‹è¯•结果
     *
     * @param bo æµ‹è¯•结果
     * @return æ˜¯å¦ä¿®æ”¹æˆåŠŸ
     */
    @Override
    public Boolean updateByBo(LbTestResultBo bo) {
        LbTestResult update = MapstructUtils.convert(bo, LbTestResult.class);
        validEntityBeforeSave(update);
        return baseMapper.updateById(update) > 0;
    }
    /**
     * ä¿å­˜å‰çš„æ•°æ®æ ¡éªŒ
     */
    private void validEntityBeforeSave(LbTestResult entity){
        //TODO åšä¸€äº›æ•°æ®æ ¡éªŒ,如唯一约束
    }
    /**
     * æ ¡éªŒå¹¶æ‰¹é‡åˆ é™¤æµ‹è¯•结果信息
     *
     * @param ids     å¾…删除的主键集合
     * @param isValid æ˜¯å¦è¿›è¡Œæœ‰æ•ˆæ€§æ ¡éªŒ
     * @return æ˜¯å¦åˆ é™¤æˆåŠŸ
     */
    @Override
    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
        if(isValid){
            //TODO åšä¸€äº›ä¸šåŠ¡ä¸Šçš„æ ¡éªŒ,判断是否需要校验
        }
        return baseMapper.deleteByIds(ids) > 0;
    }
}
ruoyi-modules/lb-qms/src/main/resources/mapper/qms/LbBatchMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
<?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="cn.shlanbao.qms.mapper.LbBatchMapper">
</mapper>
ruoyi-modules/lb-qms/src/main/resources/mapper/qms/LbDeviceMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
<?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="cn.shlanbao.qms.mapper.LbDeviceMapper">
</mapper>
ruoyi-modules/lb-qms/src/main/resources/mapper/qms/LbRetestResultMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
<?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="cn.shlanbao.qms.mapper.LbRetestResultMapper">
</mapper>
ruoyi-modules/lb-qms/src/main/resources/mapper/qms/LbSensorMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
<?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="cn.shlanbao.qms.mapper.LbSensorMapper">
</mapper>
ruoyi-modules/lb-qms/src/main/resources/mapper/qms/LbSensorResultMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
<?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="cn.shlanbao.qms.mapper.LbSensorResultMapper">
</mapper>
ruoyi-modules/lb-qms/src/main/resources/mapper/qms/LbSensorRetestMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
<?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="cn.shlanbao.qms.mapper.LbSensorRetestMapper">
</mapper>
ruoyi-modules/lb-qms/src/main/resources/mapper/qms/LbTestResultMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
<?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="cn.shlanbao.qms.mapper.LbTestResultMapper">
    <!-- æ ¹æ®äº§å“åž‹å·ã€æ‰¹æ¬¡å·ã€æ£€æµ‹é¡¹ç›®å’Œ createTime æ—¶é—´æ®µæŸ¥è¯¢æµ‹è¯•结果 -->
    <select id="selectByProdModelAndConditions" resultType="cn.shlanbao.qms.domain.vo.LbTestResultVo">
        SELECT tr.*
        FROM lb_test_result tr
        JOIN lb_batch b ON tr.batch_code = b.batch_code
        <where>
            <if test="ew.prodModel != null and ew.prodModel != ''">
                AND b.prod_model = #{ew.prodModel}
            </if>
            <if test="ew.batchCode != null and ew.batchCode != ''">
                AND tr.batch_code LIKE CONCAT('%', #{ew.batchCode}, '%')
            </if>
            <if test="ew.testItem != null and ew.testItem != ''">
                <choose>
                    <when test="ew.testItem.contains(','.toString())">
                        AND tr.test_item IN
                        <foreach collection="ew.testItem.split(',')" item="item" open="(" separator="," close=")">
                            #{item}
                        </foreach>
                    </when>
                    <otherwise>
                        AND tr.test_item = #{ew.testItem}
                    </otherwise>
                </choose>
            </if>
            <if test="ew.params.beginCreateTime != null and ew.params.endCreateTime != null">
                AND tr.create_time BETWEEN #{ew.params.beginCreateTime} AND #{ew.params.endCreateTime}
            </if>
        </where>
        ORDER BY tr.create_time ASC
    </select>
</mapper>
ruoyi-modules/lb-qms/src/main/resources/mapper/system/LbDeviceMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
<?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="cn.shlanbao.qms.mapper.LbDeviceMapper">
</mapper>
ruoyi-modules/pom.xml
@@ -15,6 +15,7 @@
        <module>ruoyi-job</module>
        <module>ruoyi-system</module>
        <module>ruoyi-workflow</module>
        <module>lb-qms</module>
    </modules>
    <artifactId>ruoyi-modules</artifactId>