From 3471290659516cf21db3211a9053daff5f283e03 Mon Sep 17 00:00:00 2001
From: zhuguifei <312353457@qq.com>
Date: 星期五, 20 三月 2026 15:50:18 +0800
Subject: [PATCH] feat: 基础数据仪器管理、判定依据、判定依据明细
---
RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/service/impl/QmJudgeServiceImpl.java | 174 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 174 insertions(+), 0 deletions(-)
diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/service/impl/QmJudgeServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/service/impl/QmJudgeServiceImpl.java
new file mode 100644
index 0000000..55b949c
--- /dev/null
+++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-qa/src/main/java/org/dromara/qa/qm/service/impl/QmJudgeServiceImpl.java
@@ -0,0 +1,174 @@
+package org.dromara.qa.qm.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 lombok.extern.slf4j.Slf4j;
+import org.dromara.qa.qm.domain.QmStd;
+import org.springframework.stereotype.Service;
+import org.dromara.qa.qm.domain.bo.QmJudgeBo;
+import org.dromara.qa.qm.domain.vo.QmJudgeVo;
+import org.dromara.qa.qm.domain.QmJudge;
+import org.dromara.qa.qm.mapper.QmJudgeMapper;
+import org.dromara.qa.qm.service.IQmJudgeService;
+import org.dromara.qa.qm.service.IQmStdService;
+import org.dromara.qa.qm.mapper.QmStdMapper;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.HashMap;
+
+/**
+ * 鍒ゅ畾渚濇嵁Service涓氬姟灞傚鐞�
+ *
+ * @author zhuguifei
+ * @date 2026-03-18
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class QmJudgeServiceImpl implements IQmJudgeService {
+
+ private final QmJudgeMapper baseMapper;
+ private final QmStdMapper qmStdMapper;
+
+ /**
+ * 鏌ヨ鍒ゅ畾渚濇嵁
+ *
+ * @param id 涓婚敭
+ * @return 鍒ゅ畾渚濇嵁
+ */
+ @Override
+ public QmJudgeVo queryById(String id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 鍒嗛〉鏌ヨ鍒ゅ畾渚濇嵁鍒楄〃
+ *
+ * @param bo 鏌ヨ鏉′欢
+ * @param pageQuery 鍒嗛〉鍙傛暟
+ * @return 鍒ゅ畾渚濇嵁鍒嗛〉鍒楄〃
+ */
+ @Override
+ public TableDataInfo<QmJudgeVo> queryPageList(QmJudgeBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper<QmJudge> lqw = buildQueryWrapper(bo);
+ Page<QmJudgeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ queryQmStd(result);
+ return TableDataInfo.build(result);
+ }
+
+ private void queryQmStd(Page<QmJudgeVo> result) {
+ if (result == null || result.getRecords() == null || result.getRecords().isEmpty()) {
+ return;
+ }
+ List<QmJudgeVo> records = result.getRecords();
+
+ // 1. Collect all unique stdCode values
+ Set<String> stdCodes = records.stream()
+ .map(QmJudgeVo::getStdCod)
+ .filter(StringUtils::isNotBlank)
+ .collect(Collectors.toSet());
+
+ if (stdCodes.isEmpty()) {
+ return;
+ }
+
+ // 2. Query QmStd entities based on the collected stdCode values
+ LambdaQueryWrapper<QmStd> stdLqw = Wrappers.lambdaQuery();
+ stdLqw.in(QmStd::getId, stdCodes);
+ List<QmStd> qmStds = qmStdMapper.selectList(stdLqw);
+
+ // 3. Create a map from stdCode to stdName for easy lookup
+ Map<String, String> stdCodeToNameMap = qmStds.stream()
+ .collect(Collectors.toMap(QmStd::getId, QmStd::getStdName, (oldValue, newValue) -> oldValue));
+
+ // 4. Populate stdName for each QmJudgeVo
+ records.forEach(judgeVo ->
+ judgeVo.setStdName(stdCodeToNameMap.getOrDefault(judgeVo.getStdCod(), null))
+ );
+ }
+
+ /**
+ * 鏌ヨ绗﹀悎鏉′欢鐨勫垽瀹氫緷鎹垪琛�
+ *
+ * @param bo 鏌ヨ鏉′欢
+ * @return 鍒ゅ畾渚濇嵁鍒楄〃
+ */
+ @Override
+ public List<QmJudgeVo> queryList(QmJudgeBo bo) {
+ LambdaQueryWrapper<QmJudge> lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper<QmJudge> buildQueryWrapper(QmJudgeBo bo) {
+ Map<String, Object> params = bo.getParams();
+ LambdaQueryWrapper<QmJudge> lqw = Wrappers.lambdaQuery();
+ lqw.like(StringUtils.isNotBlank(bo.getMatCode()), QmJudge::getMatCode, bo.getMatCode());
+ lqw.like(StringUtils.isNotBlank(bo.getMatName()), QmJudge::getMatName, bo.getMatName());
+ lqw.like(StringUtils.isNotBlank(bo.getJudgeName()), QmJudge::getJudgeName, bo.getJudgeName());
+ lqw.eq(bo.getStatus()!=null,QmJudge::getStatus, bo.getStatus());
+ lqw.eq(bo.getCategory()!=null,QmJudge::getCategory, bo.getCategory());
+ return lqw;
+ }
+
+ /**
+ * 鏂板鍒ゅ畾渚濇嵁
+ *
+ * @param bo 鍒ゅ畾渚濇嵁
+ * @return 鏄惁鏂板鎴愬姛
+ */
+ @Override
+ public Boolean insertByBo(QmJudgeBo bo) {
+ QmJudge add = MapstructUtils.convert(bo, QmJudge.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 淇敼鍒ゅ畾渚濇嵁
+ *
+ * @param bo 鍒ゅ畾渚濇嵁
+ * @return 鏄惁淇敼鎴愬姛
+ */
+ @Override
+ public Boolean updateByBo(QmJudgeBo bo) {
+ QmJudge update = MapstructUtils.convert(bo, QmJudge.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
+ */
+ private void validEntityBeforeSave(QmJudge entity){
+ //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫
+ }
+
+ /**
+ * 鏍¢獙骞舵壒閲忓垹闄ゅ垽瀹氫緷鎹俊鎭�
+ *
+ * @param ids 寰呭垹闄ょ殑涓婚敭闆嗗悎
+ * @param isValid 鏄惁杩涜鏈夋晥鎬ф牎楠�
+ * @return 鏄惁鍒犻櫎鎴愬姛
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
+ if(isValid){
+ //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
+ }
+ return baseMapper.deleteByIds(ids) > 0;
+ }
+}
--
Gitblit v1.9.3