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