From 44daca093696d96e822df6584866910f7316863b Mon Sep 17 00:00:00 2001
From: chenrui <1187576398@qq.com>
Date: 星期一, 10 三月 2025 17:39:54 +0800
Subject: [PATCH] lims检测中心设备代码迁移
---
basic-server/src/main/java/com/ruoyi/basic/service/impl/CapacityScopeServiceImpl.java | 228 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 228 insertions(+), 0 deletions(-)
diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/CapacityScopeServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/CapacityScopeServiceImpl.java
new file mode 100644
index 0000000..fc2ec38
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/CapacityScopeServiceImpl.java
@@ -0,0 +1,228 @@
+package com.ruoyi.basic.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.dto.PageTestObjectDto;
+import com.ruoyi.basic.dto.TestItemDto;
+import com.ruoyi.basic.mapper.*;
+import com.ruoyi.basic.pojo.*;
+import com.ruoyi.basic.service.CapacityScopeService;
+import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.basic.service.StandardProductListService;
+import com.ruoyi.basic.service.StructureItemParameterService;
+import com.ruoyi.system.mapper.SysDictTypeMapper;
+import com.ruoyi.system.service.ISysDictTypeService;
+import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.CompletableFuture;
+import java.util.stream.Collectors;
+
+/**
+ * 妫�楠岄」鐩弬鏁�(StructureItemParameter)琛ㄦ湇鍔″疄鐜扮被
+ *
+ * @author makejava
+ * @since 2024-02-26 16:21:17
+ */
+@Service
+@AllArgsConstructor
+public class CapacityScopeServiceImpl extends ServiceImpl<StructureItemParameterMapper, StructureItemParameter> implements CapacityScopeService {
+
+ private StandardProductListMapper standardProductListMapper;
+
+ private ThreadPoolTaskExecutor threadPoolTaskExecutor;
+
+ private StructureItemParameterMapper structureItemParameterMapper;
+
+ private StructureTestObjectMapper structureTestObjectMapper;
+
+ private ProductMapper productMapper;
+
+ private StandardProductListService standardProductListService;
+
+ private StandardTreeMapper standardTreeMapper;
+
+ private StructureItemParameterService structureItemParameterService;
+
+ private ISysDictTypeService sysDictTypeService;
+
+ @Override
+ public IPage<StructureItemParameter> selectItemParameterList(Page page, StructureItemParameter itemParameter) {
+ IPage<StructureItemParameter> parameterIPage = structureItemParameterMapper.selectItemParameterList(page, QueryWrappers.queryWrappers(itemParameter));
+ //鏌ヨ瀛楀吀
+ Map<String, List<SysDictData>> dictMaps = sysDictTypeService.selectEnumListByCategory(Arrays.asList("妫�楠岄」绫诲瀷", "鏄惁", "妫�楠屽�肩被鍨�", "鍗曚綅"));
+ parameterIPage.getRecords().forEach(ele->{
+ ele.setInspectionItemTypeTwo(getLabelByValue(dictMaps.get("妫�楠岄」绫诲瀷"),ele.getInspectionItemType()));
+ ele.setUpdateBsm(getLabelByValue(dictMaps.get("鏄惁"),ele.getBsm()));
+ ele.setInspectionValueTypeTwo(getLabelByValue(dictMaps.get("妫�楠屽�肩被鍨�"),ele.getInspectionValueType()));
+ });
+ return parameterIPage;
+ }
+
+ /**
+ * 鏍规嵁value鑾峰彇瀛楀吀
+ * @param dictList
+ * @param value
+ * @return
+ */
+ private String getLabelByValue(List<SysDictData> dictList, String value){
+ if(dictList.isEmpty()){
+ return "";
+ }
+ return dictList.stream().filter(ele-> Objects.equals(ele.getDictValue(),value)).map(SysDictData::getDictLabel).findFirst().orElse("");
+ }
+
+ @Override
+ public int addItemParameter(StructureItemParameter itemParameter) {
+ if (itemParameter.getBsm().equals("")||itemParameter.getBsm()==null){
+ itemParameter.setBsm("0");
+ }
+ int insert = structureItemParameterMapper.insert(itemParameter);
+ return insert;
+ }
+
+ @Override
+ public int delItemParameter(Integer id) {
+ return structureItemParameterMapper.deleteById(id);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public int upItemParameter(StructureItemParameter itemParameter) {
+ //鑳藉姏鑼冨洿鏇存柊锛屽悓鏃舵洿鏂板搴旂殑鏍囧噯搴�
+ StructureItemParameter oldParameter = structureItemParameterMapper.selectById(itemParameter.getId());
+ //鍒ゆ柇妫�楠岄」銆佹楠屽瓙椤广�佸崟浣嶆槸鍚︽湁淇敼锛屾湁灏卞悓鏃朵慨鏀规爣鍑嗗簱瀵瑰簲鐨勬暟鎹�
+ if(
+ !StringUtils.equals(itemParameter.getInspectionItem(),oldParameter.getInspectionItem()) ||
+ !StringUtils.equals(itemParameter.getInspectionItemSubclass(),oldParameter.getInspectionItemSubclass()) ||
+ !StringUtils.equals(itemParameter.getInspectionItemEn(),oldParameter.getInspectionItemEn()) ||
+ !StringUtils.equals(itemParameter.getInspectionItemSubclassEn(),oldParameter.getInspectionItemSubclassEn()) ||
+ !StringUtils.equals(itemParameter.getUnit(),oldParameter.getUnit())
+ ){
+ CompletableFuture.runAsync(() -> {
+ LambdaUpdateWrapper<StandardProductList> updateWrapper = Wrappers.<StandardProductList>lambdaUpdate()
+ .set(StandardProductList::getInspectionItem, itemParameter.getInspectionItem())
+ .set(StandardProductList::getInspectionItemEn, itemParameter.getInspectionItemEn())
+ .set(StandardProductList::getInspectionItemSubclass, itemParameter.getInspectionItemSubclass())
+ .set(StandardProductList::getInspectionItemSubclassEn, itemParameter.getInspectionItemSubclassEn())
+ .set(StandardProductList::getUnit, itemParameter.getUnit())
+ .eq(StandardProductList::getStructureItemParameterId,itemParameter.getId());
+ standardProductListMapper.update(null,updateWrapper);
+ },threadPoolTaskExecutor);
+ }
+ return structureItemParameterMapper.updateById(itemParameter);
+ }
+
+ @Override
+ public IPage<PageTestObjectDto> selectTestObjectList(Page page, PageTestObjectDto pageTestObjectDto) {
+ return structureTestObjectMapper.selectTestObjectList(page, QueryWrappers.queryWrappers(pageTestObjectDto));
+ }
+
+ @Override
+ public int addTestObject(StructureTestObject testObject) {
+ Long count = structureTestObjectMapper.selectCount(Wrappers.<StructureTestObject>lambdaQuery().eq(StructureTestObject::getSpecimenName, testObject.getSpecimenName()));
+ if(count.compareTo(0L) > 0){
+ throw new BaseException("妫�楠屽璞′笉鑳介噸澶�");
+ }
+ return structureTestObjectMapper.insert(testObject);
+ }
+
+ @Override
+ public int delTestObject(Integer id) {
+ List<Product> products = productMapper.selectList(Wrappers.<Product>lambdaQuery()
+ .eq(Product::getObjectId, id));
+ List<Integer> productIds = products.stream().map(Product::getId).collect(Collectors.toList());
+ // 鍒犻櫎浜у搧缁存姢
+ if (productIds.size()>0) {
+ productMapper.delete(Wrappers.<Product>lambdaQuery()
+ .in(Product::getId, productIds));
+ }
+ return structureTestObjectMapper.deleteById(id);
+ }
+
+ @Override
+ public int upTestObject(StructureTestObject testObject) {
+ // 鏌ヨ鏃х殑妫�楠屽璞�
+ StructureTestObject oldTestObject = structureTestObjectMapper.selectById(testObject.getId());
+
+ if (!oldTestObject.getSpecimenName().equals(testObject.getSpecimenName())) {
+ // 鏌ヨ鎵�鏈夊璞′竴鏍风殑妫�楠岄」鐩�
+ List<StandardProductList> standardProductLists = standardProductListService.list(Wrappers.<StandardProductList>lambdaUpdate()
+ .eq(StandardProductList::getSampleType, oldTestObject.getSpecimenName()));
+ if (CollectionUtils.isNotEmpty(standardProductLists)){
+ for (StandardProductList standardProductList : standardProductLists) {
+ // 淇敼鎵�鏈夌殑瀵硅薄鍚嶇О鍜屾暟鍨嬬粨鏋�
+ standardProductList.setSampleType(testObject.getSpecimenName());
+ // 闇�瑕佹埅鍙栫涓夌骇, 閬垮厤涓夊洓绾у悕绉颁竴鏍蜂慨鏀归敊璇�
+ String[] trees = standardProductList.getTree().split(" - ");
+ trees[2] = testObject.getSpecimenName();
+ List<String> list = CollUtil.newArrayList(trees);
+ String newName = CollUtil.join(list, " - ");
+ standardProductList.setTree(newName);
+ }
+ standardProductListService.updateBatchById(standardProductLists);
+ }
+ // 淇敼妫�楠岄」鐩弬鏁扮殑妫�楠屽璞�
+ // 鎷兼帴 ["object", 鏌ヨ妫�楠岄」鐩弬鏁颁慨鏀圭粦瀹氱殑妫�楠屽璞�
+ String format = "[\"{}\",";
+ String sampleOld = StrUtil.format(format, oldTestObject.getSpecimenName());
+ List<StructureItemParameter> itemParameterList = structureItemParameterService.list(Wrappers.<StructureItemParameter>lambdaQuery()
+ .like(StructureItemParameter::getSample, sampleOld));
+ if (CollectionUtils.isNotEmpty(itemParameterList)) {
+ for (StructureItemParameter structureItemParameter : itemParameterList) {
+ // 淇敼缁戝畾鐨勬牱鍝佸悕绉�
+ String sampleNew = StrUtil.format(format, testObject.getSpecimenName());
+ String sampleUp = structureItemParameter.getSample().replace(sampleOld, sampleNew);
+ structureItemParameter.setSample(sampleUp);
+ }
+ structureItemParameterService.updateBatchById(itemParameterList);
+ }
+
+ // 淇敼鏍戠殑鍨嬪彿
+ standardTreeMapper.update(null, Wrappers.<StandardTree>lambdaUpdate()
+ .eq(StandardTree::getSampleType, oldTestObject.getSpecimenName())
+ .set(StandardTree::getSampleType, testObject.getSpecimenName()));
+ }
+
+ Long count = structureTestObjectMapper.selectCount(Wrappers.<StructureTestObject>lambdaQuery()
+ .eq(StructureTestObject::getSpecimenName, testObject.getSpecimenName())
+ .ne(StructureTestObject::getId, testObject.getId()));
+ if(count.compareTo(0L) > 0){
+ throw new BaseException("妫�楠屽璞′笉鑳介噸澶�");
+ }
+
+ return structureTestObjectMapper.updateById(testObject);
+ }
+
+ @Override
+ public List<StructureTestObject> selectTestObjectByName() {
+ return structureTestObjectMapper.selectList(Wrappers.<StructureTestObject>lambdaQuery().select(StructureTestObject::getSpecimenName,StructureTestObject::getId));
+ }
+
+ //璁惧閲岄潰閫夋嫨妫�楠岄」鐩�(鏍戝舰缁撴瀯)
+ @Override
+ public List<Map<String, Object>> getInsProduction() {
+ return structureItemParameterMapper.getInsProduction();
+ }
+
+ @Override
+ public List<TestItemDto> getItemTree() {
+ return structureItemParameterMapper.getItemTree();
+ }
+}
+
--
Gitblit v1.9.3