From eeb8d7faa8d25b3ca9fe75ef28f035c49af5b06d Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期二, 11 三月 2025 11:05:38 +0800
Subject: [PATCH] Merge branch 'dev' into dev_zj

---
 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