From 7aed46e2fc2c9b9b56554f7bc7b4e4db67d02148 Mon Sep 17 00:00:00 2001 From: dengchun Date: Sat, 26 Apr 2025 12:30:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=99=A8=E4=BB=B6=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=EF=BC=8C=E6=96=B0=E5=A2=9E=EF=BC=8C=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E5=88=97=E8=A1=A8=EF=BC=8C=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 ++ db/physical-boot.sql | 16 ++- .../jeecg/common/api/vo/SearchRequest.java | 12 ++ .../constant/ComponentSearchType.java | 18 +++ .../controller/ComponentSearchController.java | 132 ++++++++++++++++++ .../modules/database/entity/SearchResult.java | 71 ++++++++++ .../mapper/ComponentSearchMapper.java | 7 + .../mapper/xml/ComponentSearchMapper.xml | 5 + .../service/IComponentSearchService.java | 17 +++ .../impl/ComponentSearchServiceImpl.java | 79 +++++++++++ 10 files changed, 366 insertions(+), 1 deletion(-) create mode 100644 physical-base-core/src/main/java/org/jeecg/common/api/vo/SearchRequest.java create mode 100644 physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/constant/ComponentSearchType.java create mode 100644 physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ComponentSearchController.java create mode 100644 physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/entity/SearchResult.java create mode 100644 physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/mapper/ComponentSearchMapper.java create mode 100755 physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/mapper/xml/ComponentSearchMapper.xml create mode 100644 physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/IComponentSearchService.java create mode 100644 physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ComponentSearchServiceImpl.java diff --git a/README.md b/README.md index d3e87f4..aa1a4d3 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,16 @@ # 前端打包命令 pnpm run build + + +# 后端发布 +## 测试环境 +docker compose pull +docker compose up -d + +# 数据库地址 +47.102.126.67:23306 +root urwTocIA1f395t # minio bucket 权限配置 ```json diff --git a/db/physical-boot.sql b/db/physical-boot.sql index 33fa025..eb968a4 100644 --- a/db/physical-boot.sql +++ b/db/physical-boot.sql @@ -1,4 +1,18 @@ - +DROP TABLE IF EXISTS `component_search`; +CREATE TABLE `component_search` ( + `id` varchar(36) CHARACTER SET utf8mb4 NOT NULL, + `create_by` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '创建人', + `create_time` datetime DEFAULT NULL COMMENT '创建日期', + `update_by` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '更新人', + `update_time` datetime DEFAULT NULL COMMENT '更新日期', + `data_type` varchar(32) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '数据类型', + `content` varchar(200) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '搜索内容', + `extent_info` varchar(648) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '拓展字段', + -- 索引 + UNIQUE INDEX idx_unique_column2 (content), + INDEX idx_combined (data_type, content), + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/physical-base-core/src/main/java/org/jeecg/common/api/vo/SearchRequest.java b/physical-base-core/src/main/java/org/jeecg/common/api/vo/SearchRequest.java new file mode 100644 index 0000000..fb2c920 --- /dev/null +++ b/physical-base-core/src/main/java/org/jeecg/common/api/vo/SearchRequest.java @@ -0,0 +1,12 @@ +package org.jeecg.common.api.vo; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class SearchRequest implements Serializable { + private String id; + private int type; + private String content; +} diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/constant/ComponentSearchType.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/constant/ComponentSearchType.java new file mode 100644 index 0000000..2d3fe1a --- /dev/null +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/constant/ComponentSearchType.java @@ -0,0 +1,18 @@ +package org.jeecg.modules.database.constant; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum ComponentSearchType { + + MODEL_NUMBER(1, "样品型号"), + MODEL_NAME(2, "样品名称"), + MODEL_TYPE(3, "样品类型"), + MODEL_BATCH_NO(4, "样品批次"); + + + int code; + String name; +} diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ComponentSearchController.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ComponentSearchController.java new file mode 100644 index 0000000..bb347ea --- /dev/null +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ComponentSearchController.java @@ -0,0 +1,132 @@ +package org.jeecg.modules.database.controller; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletRequest; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.api.vo.SearchRequest; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.system.util.JwtUtil; +import org.jeecg.modules.database.entity.SearchResult; +import org.jeecg.modules.database.service.IComponentSearchService; +import org.jeecg.modules.system.entity.SysUser; +import org.jeecg.modules.system.service.ISysUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; +@Tag(name = "样品元器件模糊预搜索API") +@RestController +@RequestMapping("/database/componentSearch") +@Slf4j +public class ComponentSearchController { + @Autowired + private IComponentSearchService componentSearchService; + + @Autowired + private ISysUserService userService; + + /** + * 默认查询器件类型的分页列表 + * @param type + * @param content + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @Operation(summary = "器件查询 - 分页查询API") + @GetMapping(value = "/list") + public Result> queryPageList(@RequestParam(name = "type", defaultValue = "3") Integer type,@RequestParam(name = "content", defaultValue = "") String content, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize + ) { + Result> result = new Result<>(); + IPage pageList = componentSearchService.queryPageList(type, content, pageNo, pageSize); + result.setSuccess(true); + result.setResult(pageList); + + return result; + } + + /** + * 模糊搜索接口 + * @return + */ + /** + * + * @param type + * @param content + * @return + */ + @Operation(summary = "器件查询 - 分页查询API") + @GetMapping(value = "/search") + public Result> search(@RequestParam(name = "type", defaultValue = "") Integer type,@RequestParam(name = "content", defaultValue = "") String content) { + Result> result = new Result<>(); + result.setSuccess(true); + result.setResult(componentSearchService.search(type, content)); + + return result; + } + + @AutoLog(value = "器件搜索数据-添加") + @Operation(summary = "器件搜索数据-添加") + // @RequiresPermissions("database:document_favorites:add") + @PostMapping(value = "/add") + public Result add(@RequestBody SearchRequest searchRequest, HttpServletRequest request) { + String username = JwtUtil.getUserNameByToken(request); + SysUser userByName = userService.getUserByName(username); + SearchResult result = new SearchResult(); + result.setContent(searchRequest.getContent()); + result.setDataType(searchRequest.getType()); + Date currentDate = new Date(); + result.setCreateTime(currentDate); + result.setUpdateTime(currentDate); + result.setCreateBy(userByName.getId()); + result.setUpdateBy(userByName.getId()); + componentSearchService.save(result); + return Result.OK("保存成功!"); + } + + + /** + * 编辑 + * @param searchResult + * @return + */ + @AutoLog(value = "器件搜索数据-编辑") + @Operation(summary = "器件搜索数据-编辑") + // @RequiresPermissions("database:document_favorites:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result edit(@RequestBody SearchResult searchResult, HttpServletRequest request) { + String username = JwtUtil.getUserNameByToken(request); + SysUser userByName = userService.getUserByName(username); + searchResult.setUpdateBy(userByName.getId()); + searchResult.setUpdateTime(new Date()); + componentSearchService.updateById(searchResult); + return Result.OK("编辑成功!"); + } + + + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "器件搜索数据-通过id删除") + @Operation(summary = "器件搜索数据-通过id删除") + // @RequiresPermissions("database:document_favorites:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name = "id") String id) { + componentSearchService.removeById(id); + return Result.OK("删除!"); + } + +} diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/entity/SearchResult.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/entity/SearchResult.java new file mode 100644 index 0000000..4203d08 --- /dev/null +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/entity/SearchResult.java @@ -0,0 +1,71 @@ +package org.jeecg.modules.database.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +@Data +@Accessors(chain = true) +@EqualsAndHashCode +@Schema(description = "系统预搜索的信息模型") +@TableName("component_search") +public class SearchResult implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private String id; + /** + * 创建人 + */ + @Schema(description = "创建人") + private String createBy; + /** + * 创建日期 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") + @Schema(description = "创建日期") + private Date createTime; + /** + * 更新人 + */ + @Schema(description = "更新人") + private String updateBy; + /** + * 更新日期 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") + @Schema(description = "更新日期") + private Date updateTime; + + /** + * 搜索的数据类型,参考枚举 @ComponentSearchType + */ + @Schema(description = "数据类型") + private int dataType; + /** + * 搜索的内容 + */ + @Schema(description = "搜索内容") + private String content; + + /** + * 用来作为拓展字段 + */ + @Schema(description = "扩展信息") + private String extentInfo; +} diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/mapper/ComponentSearchMapper.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/mapper/ComponentSearchMapper.java new file mode 100644 index 0000000..a155728 --- /dev/null +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/mapper/ComponentSearchMapper.java @@ -0,0 +1,7 @@ +package org.jeecg.modules.database.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.database.entity.SearchResult; + +public interface ComponentSearchMapper extends BaseMapper { +} diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/mapper/xml/ComponentSearchMapper.xml b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/mapper/xml/ComponentSearchMapper.xml new file mode 100755 index 0000000..d105932 --- /dev/null +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/mapper/xml/ComponentSearchMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/IComponentSearchService.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/IComponentSearchService.java new file mode 100644 index 0000000..994dbee --- /dev/null +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/IComponentSearchService.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.database.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.database.entity.Experiment; +import org.jeecg.modules.database.entity.SearchResult; + +import java.util.List; + +public interface IComponentSearchService extends IService { + + IPage queryPageList(Integer type, String content, Integer pageNo, Integer pageSize); + List search(Integer type, String content); + + + void saveDataAfterSaveExperiment(Experiment experiment); +} diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ComponentSearchServiceImpl.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ComponentSearchServiceImpl.java new file mode 100644 index 0000000..b1d59c7 --- /dev/null +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ComponentSearchServiceImpl.java @@ -0,0 +1,79 @@ +package org.jeecg.modules.database.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.modules.database.constant.ComponentSearchType; +import org.jeecg.modules.database.entity.DocumentFavorites; +import org.jeecg.modules.database.entity.Experiment; +import org.jeecg.modules.database.entity.SearchResult; +import org.jeecg.modules.database.mapper.ComponentSearchMapper; +import org.jeecg.modules.database.service.IComponentSearchService; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class ComponentSearchServiceImpl extends ServiceImpl implements IComponentSearchService { + @Override + public IPage queryPageList(Integer type, String content, Integer pageNo, Integer pageSize) { + SearchResult searchResult = new SearchResult(); + Map requestMap = new HashMap(); + requestMap.put("dataType", type); + requestMap.put("content", content); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(searchResult,requestMap); + Page page = new Page<>(pageNo, pageSize); + IPage pageList = this.page(page, queryWrapper); + return pageList; + } + + @Override + public List search(Integer type, String content) { + SearchResult searchResult = new SearchResult(); + Map requestMap = new HashMap(); + requestMap.put("dataType", type); + requestMap.put("content", content); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(searchResult,requestMap); + return this.list(queryWrapper); + } + + @Override + public void saveDataAfterSaveExperiment(Experiment experiment) { + // 批量更新样品型号,样品名称,样品批次 + if (CollUtil.isNotEmpty(experiment.getSampleInfoList())) { + experiment.getSampleInfoList().forEach(sampleInfo -> { + SearchResult modelNumberRecord = new SearchResult(); + modelNumberRecord.setDataType(ComponentSearchType.MODEL_NUMBER.getCode()); + modelNumberRecord.setContent(sampleInfo.getSampleModel()); + try { + saveOrUpdate(modelNumberRecord); + }catch (Exception e) { + log.warn("样品型号搜索数据更新失败,错误信息: " + e.getMessage()); + } + + SearchResult modelNameRecord = new SearchResult(); + modelNameRecord.setDataType(ComponentSearchType.MODEL_NAME.getCode()); + modelNameRecord.setContent(sampleInfo.getSampleName()); + try { + updateById(modelNameRecord); + }catch (Exception e) { + log.warn("样品名称搜索数据更新失败,错误信息: " + e.getMessage()); + } + + SearchResult modelBatchNoRecord = new SearchResult(); + modelBatchNoRecord.setDataType(ComponentSearchType.MODEL_BATCH_NO.getCode()); + modelBatchNoRecord.setContent(sampleInfo.getModelBatch()); + try { + updateById(modelBatchNoRecord); + }catch (Exception e) { + log.warn("样品批次搜索数据更新失败,错误信息: " + e.getMessage()); + } + }); + } + } +}