ソースを参照

v3项目-新增非洲猪瘟检测

wwh 1 週間 前
コミット
8cfad5503d

+ 61 - 0
app-admin/src/main/java/com/ruoyi/web/v3/controller/HbCheckAsfController.java

@@ -0,0 +1,61 @@
+package com.ruoyi.web.v3.controller;
+
+
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.web.v3.entity.HbCheckAsfEntity;
+import com.ruoyi.web.v3.model.request.HbCheckAsfPageReq;
+import com.ruoyi.web.v3.service.IHbCheckAsfService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+/**
+ * <p>
+ * v3.0非洲猪瘟检测 前端控制器
+ * </p>
+ *
+ */
+@RestController
+@RequestMapping("/v3/hb-check-asf")
+@Api("3.0非洲猪瘟检测管理")
+public class HbCheckAsfController {
+
+    @Resource
+    private IHbCheckAsfService checkAsfService;
+
+    @ApiOperation("非洲猪瘟检测记录添加")
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody HbCheckAsfEntity request){
+        return checkAsfService.add(request);
+    }
+
+    @ApiOperation("非洲猪瘟检测记录修改")
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody HbCheckAsfEntity request){
+        return checkAsfService.edit(request);
+    }
+
+    @ApiOperation("非洲猪瘟检测记录删除")
+    @PostMapping("/delete")
+    public AjaxResult delete(@RequestBody Map<String, String> paramsMap) {
+        String ids = paramsMap.get("ids");
+        return checkAsfService.delete(ids);
+    }
+
+    @ApiOperation("非洲猪瘟检测记录分页查询")
+    @GetMapping("/page")
+    public AjaxResult page(@ModelAttribute HbCheckAsfPageReq request) {
+        return checkAsfService.page(request);
+    }
+
+
+    @ApiOperation("非洲猪瘟检测记录列表全量查询")
+    @GetMapping("/list")
+    public AjaxResult listAll(){
+        return checkAsfService.listAll();
+    }
+
+}

+ 77 - 0
app-admin/src/main/java/com/ruoyi/web/v3/entity/HbCheckAsfEntity.java

@@ -0,0 +1,77 @@
+package com.ruoyi.web.v3.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.AbstractEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+
+/**
+ * <p>
+ * v3.0非洲猪瘟检测登记
+ * </p>
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("hb_check_asf")
+@ApiModel(value="HbCheckAsf", description="v3.0非洲猪瘟检测登记")
+public class HbCheckAsfEntity extends AbstractEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "检测报告编号")
+    private String recordId;
+
+    @ApiModelProperty(value = "采样编号")
+    private String markNoGroup;
+
+    @ApiModelProperty(value = "检测生猪数")
+    private Integer quantity;
+
+    @ApiModelProperty(value = "样品编号")
+    private String sampleNoGroup;
+
+    @ApiModelProperty(value = "对应检疫证号码")
+    private String animalCertNo;
+
+    @ApiModelProperty(value = "试剂名称")
+    private String drugName;
+
+    @ApiModelProperty(value = "生产厂家")
+    private String producerName;
+
+    @ApiModelProperty(value = "有效期至")
+    private LocalDateTime expireTime;
+
+    @ApiModelProperty(value = "混样记录")
+    private String mixedRecord;
+
+    @ApiModelProperty(value = "检测方法")
+    private String checkMethod;
+
+    @ApiModelProperty(value = "检测结果")
+    private String checkResult;
+
+    @ApiModelProperty(value = "屠宰厂检测人(签名)")
+    private String examinerName;
+
+    @ApiModelProperty(value = "屠宰厂负责人(签名)")
+    private String ownerName;
+
+    @ApiModelProperty(value = "屠宰厂签名日期")
+    private String chargeTime;
+
+    @ApiModelProperty(value = "官方兽医确认(签名)")
+    private String veterinaryName;
+
+    @ApiModelProperty(value = "兽医签名日期")
+    private String veterinaryTime;
+
+}

+ 14 - 0
app-admin/src/main/java/com/ruoyi/web/v3/mapper/HbCheckAsfMapper.java

@@ -0,0 +1,14 @@
+package com.ruoyi.web.v3.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.v3.entity.HbCheckAsfEntity;
+
+/**
+ * <p>
+ * v3.0非洲猪瘟检测登记 Mapper 接口
+ * </p>
+ *
+ */
+public interface HbCheckAsfMapper extends BaseMapper<HbCheckAsfEntity> {
+
+}

+ 23 - 0
app-admin/src/main/java/com/ruoyi/web/v3/model/BasePageRequest.java

@@ -0,0 +1,23 @@
+package com.ruoyi.web.v3.model;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+
+@Data
+public class BasePageRequest {
+
+    @Min(1)
+    private Integer pageNum = 1;
+
+    @Min(1)
+    @Max(1000)
+    private Integer pageSize = 10;
+
+    public <T> Page<T> toPage() {
+        return new Page<>(pageNum, pageSize);
+    }
+
+}

+ 73 - 0
app-admin/src/main/java/com/ruoyi/web/v3/model/request/HbCheckAsfPageReq.java

@@ -0,0 +1,73 @@
+package com.ruoyi.web.v3.model.request;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.web.v3.model.BasePageRequest;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("hb_check_asf")
+@ApiModel(value="HbCheckAsf", description="v3.0非洲猪瘟检测登记")
+public class HbCheckAsfPageReq extends BasePageRequest implements Serializable {
+
+    @ApiModelProperty(value = "数据唯一性标识id")
+    private String id;
+
+    @ApiModelProperty(value = "检测报告编号")
+    private String recordId;
+
+    @ApiModelProperty(value = "采样编号")
+    private String markNoGroup;
+
+    @ApiModelProperty(value = "检测生猪数")
+    private Integer quantity;
+
+    @ApiModelProperty(value = "样品编号")
+    private String sampleNoGroup;
+
+    @ApiModelProperty(value = "对应检疫证号码")
+    private String animalCertNo;
+
+    @ApiModelProperty(value = "试剂名称")
+    private String drugName;
+
+    @ApiModelProperty(value = "生产厂家")
+    private String producerName;
+
+    @ApiModelProperty(value = "有效期至")
+    private LocalDateTime expireTime;
+
+    @ApiModelProperty(value = "混样记录")
+    private String mixedRecord;
+
+    @ApiModelProperty(value = "检测方法")
+    private String checkMethod;
+
+    @ApiModelProperty(value = "检测结果")
+    private String checkResult;
+
+    @ApiModelProperty(value = "屠宰厂检测人(签名)")
+    private String examinerName;
+
+    @ApiModelProperty(value = "屠宰厂负责人(签名)")
+    private String ownerName;
+
+    @ApiModelProperty(value = "屠宰厂签名日期")
+    private String chargeTime;
+
+    @ApiModelProperty(value = "官方兽医确认(签名)")
+    private String veterinaryName;
+
+    @ApiModelProperty(value = "兽医签名日期")
+    private String veterinaryTime;
+
+}

+ 24 - 0
app-admin/src/main/java/com/ruoyi/web/v3/service/IHbCheckAsfService.java

@@ -0,0 +1,24 @@
+package com.ruoyi.web.v3.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.web.v3.entity.HbCheckAsfEntity;
+import com.ruoyi.web.v3.model.request.HbCheckAsfPageReq;
+
+/**
+ * <p>
+ * v3.0非洲猪瘟检测管理 服务类
+ * </p>
+ */
+public interface IHbCheckAsfService extends IService<HbCheckAsfEntity> {
+
+    AjaxResult add(HbCheckAsfEntity request);
+
+    AjaxResult edit(HbCheckAsfEntity request);
+
+    AjaxResult delete(String ids);
+
+    AjaxResult page(HbCheckAsfPageReq request);
+
+    AjaxResult listAll();
+}

+ 76 - 0
app-admin/src/main/java/com/ruoyi/web/v3/service/impl/HbCheckAsfServiceImpl.java

@@ -0,0 +1,76 @@
+package com.ruoyi.web.v3.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.web.v3.entity.HbCheckAsfEntity;
+import com.ruoyi.web.v3.mapper.HbCheckAsfMapper;
+import com.ruoyi.web.v3.model.request.HbCheckAsfPageReq;
+import com.ruoyi.web.v3.service.IHbCheckAsfService;
+import com.ruoyi.web.v3.utils.QueryWrapperBuildUtil;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
+
+import java.util.Arrays;
+
+import static com.ruoyi.common.core.domain.AjaxResult.error;
+import static com.ruoyi.common.core.domain.AjaxResult.success;
+
+/**
+ * <p>
+ * v2.0设备档案管理 服务实现类
+ * </p>
+ *
+ */
+@Service
+public class HbCheckAsfServiceImpl extends ServiceImpl<HbCheckAsfMapper, HbCheckAsfEntity> implements IHbCheckAsfService {
+
+    @Transactional
+    @Override
+    public AjaxResult add(HbCheckAsfEntity request) {
+        //入参检测
+        if(ObjectUtils.isEmpty(request.getRecordId())) {
+            return error("请输入【报告编号】!");
+        }
+        //防重检测,
+        Integer count = lambdaQuery().eq(HbCheckAsfEntity::getRecordId, request.getRecordId()).count();
+        if (count != 0) {
+            return error("请勿重复添加!");
+        }
+        return success("添加成功", baseMapper.insert(request));
+    }
+
+    @Transactional
+    @Override
+    public AjaxResult edit(HbCheckAsfEntity request) {
+        //数据格式校验
+        if(ObjectUtils.isEmpty(request.getId())){
+            return error("待更新数据未传入有效ID,请设置数据的唯一标识ID!");
+        }
+        //根据数据的id更新所有不为空的字段
+        return updateById(request) ? success("修改成功!") : error("修改失败,请重试!");
+    }
+
+    @Transactional
+    @Override
+    public AjaxResult delete(String ids) {
+        String[] idList = ids.split(",");
+        return success("删除成功", removeByIds(Arrays.asList(idList)));
+    }
+
+    @Override
+    public AjaxResult page(HbCheckAsfPageReq request) {
+        //将请求报文转为实体类
+        HbCheckAsfEntity entity = BeanUtil.toBean(request, HbCheckAsfEntity.class);
+        //构造查询条件(检索条件未定时,先按不为空的字段进行等值查询)
+        QueryWrapper<HbCheckAsfEntity> wrapper = QueryWrapperBuildUtil.notNoneEqWrapperHelper(entity);
+        return success(baseMapper.selectPage(request.toPage(), wrapper));
+    }
+
+    @Override
+    public AjaxResult listAll() {
+        return success(lambdaQuery().list());
+    }
+}

+ 45 - 0
app-admin/src/main/java/com/ruoyi/web/v3/utils/QueryWrapperBuildUtil.java

@@ -0,0 +1,45 @@
+package com.ruoyi.web.v3.utils;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+
+import java.lang.reflect.Field;
+
+public class QueryWrapperBuildUtil {
+
+    public static String camelToUnderline(String camel) {
+        return camel.replaceAll("([a-z])([A-Z])", "$1_$2").toLowerCase();
+    }
+
+    public static <T, E> QueryWrapper<T> notNoneEqWrapperHelper(E entity) {
+        QueryWrapper<T> wrapper = new QueryWrapper<>();
+        if (entity == null) {
+            return wrapper;
+        }
+
+        Class<?> clazz = entity.getClass();
+        while (clazz != null && clazz != Object.class) {
+            processClassFields(entity, clazz, wrapper);
+            clazz = clazz.getSuperclass();
+        }
+        return wrapper;
+    }
+
+    private static <T, E> void processClassFields(E entity, Class<?> clazz, QueryWrapper<T> wrapper) {
+        Field[] fields = clazz.getDeclaredFields();
+        for (Field field : fields) {
+            try {
+                if ("serialVersionUID".equals(field.getName())) {
+                    continue;
+                }
+                field.setAccessible(true);
+                Object value = field.get(entity);
+                if (value != null) {
+                    wrapper.eq(camelToUnderline(field.getName()), value);
+                }
+            } catch (IllegalAccessException e) {
+                // 忽略无法访问的字段
+            }
+        }
+    }
+
+}

+ 5 - 1
app-common/pom.xml

@@ -185,7 +185,11 @@
             <artifactId>javase</artifactId>
             <version>3.5.1</version>
         </dependency>
-
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
 
     </dependencies>
 

+ 39 - 0
app-common/src/main/java/com/ruoyi/common/core/domain/AbstractEntity.java

@@ -0,0 +1,39 @@
+package com.ruoyi.common.core.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class AbstractEntity  {
+
+
+    @TableId(type = IdType.AUTO)
+    private Long id; // 自增主键
+
+    @JsonIgnore
+    @TableLogic
+    private Integer isDeleted; // 逻辑删除标记(0未删除 1已删除)
+
+    @JsonIgnore
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime; // 创建时间
+
+    /** 创建者 */
+    @JsonIgnore
+    @TableField(fill = FieldFill.INSERT)
+    private String createBy;
+
+    @JsonIgnore
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime; // 更新时间
+
+
+    /** 更新者 */
+    @JsonIgnore
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateBy;
+
+}

+ 48 - 0
app-framework/src/main/java/com/ruoyi/framework/config/MyBatisPlusConfig.java

@@ -0,0 +1,48 @@
+package com.ruoyi.framework.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.apache.ibatis.reflection.MetaObject;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+
+import java.time.LocalDateTime;
+import java.util.Optional;
+
+@Configuration
+public class MyBatisPlusConfig implements MetaObjectHandler {
+
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+        return interceptor;
+    }
+
+    @Override
+    public void insertFill(MetaObject metaObject) {
+        this.strictInsertFill(metaObject, "createTime", LocalDateTime::now, LocalDateTime.class);
+        this.strictInsertFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
+        this.strictInsertFill(metaObject, "createBy", this::getCurrentUsername, String.class);
+        this.strictInsertFill(metaObject, "updateBy", this::getCurrentUsername, String.class);
+    }
+
+    @Override
+    public void updateFill(MetaObject metaObject) {
+        this.strictUpdateFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
+        this.strictUpdateFill(metaObject, "updateBy", this::getCurrentUsername, String.class);
+    }
+
+    private String getCurrentUsername() {
+        return Optional.ofNullable(SecurityContextHolder.getContext().getAuthentication())
+                .map(Authentication::getName)
+                .orElse("system");
+    }
+
+
+
+}

+ 29 - 0
sql/v3_biz_20250814.sql

@@ -0,0 +1,29 @@
+-- ----------------------------
+-- 1、非洲猪瘟检测表
+-- ----------------------------
+drop table if exists hb_check_asf;
+create table hb_check_asf (
+  id                bigint(20)      not null auto_increment    comment '自增id',
+  record_id         varchar(60)     default null               comment '检测报告编号',
+  mark_no_group     varchar(300)    default null               comment '采样编号,可以是一个或多个编号,多个用逗号分隔',
+  quantity          Integer         default 0                  comment '检测生猪数',
+  sample_no_group   varchar(300)    default null               comment '样品编号',
+  animal_cert_no    varchar(300)    default null               comment '对应检疫证号码',
+  drug_name         varchar(60)     default null               comment '试剂名称',
+  producer_name     varchar(50)     default null               comment '生产厂家',
+  expire_time       datetime                                   comment '有效期至',
+  mixed_record      varchar(30)     default null               comment '混样记录',
+  check_method      varchar(30)     default null               comment '检测方法',
+  check_result      varchar(255)    default null               comment '检测结果',
+  examiner_name     varchar(30)     default null               comment '屠宰厂检测人(签名)',
+  owner_name        varchar(30)     default null               comment '屠宰厂负责人(签名)',
+  charge_time       datetime                                   comment '屠宰厂签名日期',
+  veterinary_name   varchar(30)     default null               comment '官方兽医确认(签名)',
+  veterinary_time   datetime                                   comment '兽医签名日期',
+  is_deleted        tinyint(1)      default 0                  comment '是否删除标志,0否1是',
+  create_by         varchar(64)     default ''                 comment '创建者',
+  create_time 	    datetime                                   comment '创建时间',
+  update_by         varchar(64)     default ''                 comment '更新者',
+  update_time       datetime                                   comment '更新时间',
+  primary key (id)
+) engine=innodb auto_increment=1 comment = '非洲猪瘟检测表';