From b999398ae9b2719d2db15716dd353f7a3855d59e Mon Sep 17 00:00:00 2001 From: chenrui <1187576398@qq.com> Date: 星期一, 07 四月 2025 17:33:55 +0800 Subject: [PATCH] Merge branch 'radio_frequency' of http://114.132.189.42:9002/r/lims-ruoyi-after into radio_frequency --- ruoyi-admin/src/main/resources/application-test.yml | 16 ++-- basic-server/src/main/java/com/ruoyi/basic/service/impl/CapacityScopeServiceImpl.java | 8 +- ruoyi-system/src/main/resources/mapper/system/UserMapper.xml | 3 basic-server/src/main/resources/mapper/StructureItemParameterMapper.xml | 58 +++++++++----- basic-server/src/main/java/com/ruoyi/basic/excel/MultiSheetImportListener.java | 30 ++++++ basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java | 80 ++++++++++--------- 6 files changed, 119 insertions(+), 76 deletions(-) diff --git a/basic-server/src/main/java/com/ruoyi/basic/excel/MultiSheetImportListener.java b/basic-server/src/main/java/com/ruoyi/basic/excel/MultiSheetImportListener.java index 298b820..e425cb6 100644 --- a/basic-server/src/main/java/com/ruoyi/basic/excel/MultiSheetImportListener.java +++ b/basic-server/src/main/java/com/ruoyi/basic/excel/MultiSheetImportListener.java @@ -18,9 +18,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Slf4j @@ -37,6 +35,9 @@ private final StandardTemplateService standardTemplateService; + // 鏂板锛氬唴瀛樺幓閲嶉泦鍚堬紙璁板綍鍞竴閿級 + private Set<String> uniqueKeys = new HashSet<>(); + public MultiSheetImportListener(StructureItemParameterService parameterService, StandardTemplateService standardTemplateService, ISysDictTypeService dictTypeService) { this.parameterService = parameterService; @@ -47,6 +48,18 @@ @Override public void invoke(StructureItemParameter data, AnalysisContext context) { + + String uniqueKey = buildUniqueKey(data); + if (uniqueKeys.contains(uniqueKey)) { + log.warn("鍙戠幇閲嶅鏁版嵁锛屽凡璺宠繃: {} (Sheet: {}, 琛屽彿: {})", + uniqueKey, + currentSheetName, + context.readRowHolder().getRowIndex() + 1 + ); + return; + } + uniqueKeys.add(uniqueKey); + data.setId(null); // 娴嬭瘯瀵硅薄 if (data.getSample() == null) { @@ -217,4 +230,15 @@ // 鎵撳嵃瀹屾暣閿欒鍫嗘爤锛堣皟璇曟椂寮�鍚級 log.error("Sheet[{}] 绗瑊}琛岀{}鍒楄В鏋愬け璐�: {}", sheetName, rowIndex, columnIndex, errorMsg); } + + private String buildUniqueKey(StructureItemParameter data) { + return String.join("|", + ObjectUtils.defaultIfNull(data.getInspectionItem(), ""), + ObjectUtils.defaultIfNull(data.getInspectionItemEn(),""), + ObjectUtils.defaultIfNull(data.getProduct(),""), + ObjectUtils.defaultIfNull(data.getInspectionItemSubclass(), ""), + ObjectUtils.defaultIfNull(data.getSample(), ""), + ObjectUtils.defaultIfNull(data.getInspectionItemClass(), "") + ); + } } \ No newline at end of file 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 index c8b730b..3490bf4 100644 --- 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 @@ -197,12 +197,12 @@ @Override public List<Model> getProductTypes(ModelDto modelDto) { - return modelMapper.selectList(Wrappers.<Model>lambdaQuery().eq(Model::getProductId,modelDto.getProductId())); + return modelMapper.selectList(Wrappers.<Model>lambdaQuery().eq(Model::getProductId, modelDto.getProductId())); } @Override public List<ProductPart> getPartNoList(ProductPartDto productPartDto) { - return productPartMapper.selectList(Wrappers.<ProductPart>lambdaQuery().eq(ProductPart::getProductId,productPartDto.getProductId())); + return productPartMapper.selectList(Wrappers.<ProductPart>lambdaQuery().eq(ProductPart::getProductId, productPartDto.getProductId())); } @Transactional(rollbackFor = Exception.class) @@ -379,7 +379,7 @@ List<StructureTestObject> insertedObjects) { insertedObjects.forEach(obj -> { - String key = obj.getSpecimenName() + "|" + obj.getSpecimenNameEn()+ "|" + obj.getObjectType(); + String key = obj.getSpecimenName() + "|" + obj.getSpecimenNameEn() + "|" + obj.getObjectType(); existStructureTestObjects.get(key).setId(obj.getId()); // 鏇存柊缂撳瓨涓殑ID }); } @@ -393,7 +393,7 @@ // 闃舵5鍘熸湁浜у搧澶勭悊閫昏緫杩佺Щ鑷虫 pendingProducts.forEach(i -> { - String specimenKey = i.getSpecimenName() + "|" + i.getSpecimenNameEn()+ "|" + i.getObjectType(); + String specimenKey = i.getSpecimenName() + "|" + i.getSpecimenNameEn() + "|" + i.getObjectType(); StructureTestObject sto = structureTestObjectCache.get(specimenKey); processProductData( diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java index 3f60b21..ffab8ea 100644 --- a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java +++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java @@ -81,21 +81,21 @@ basicTreeDto.setValue(String.valueOf(model.getId())); basicTreeDto.setLabel(model.getModelName()); basicTreeDto.setChildren(null); - if(model.getProductId() != null) { - if(CollectionUtils.isEmpty(productModelMap.get(model.getProductId()))){ + if (model.getProductId() != null) { + if (CollectionUtils.isEmpty(productModelMap.get(model.getProductId()))) { List<BasicTreeDto> basicTreeDtoList = new ArrayList<>(); basicTreeDtoList.add(basicTreeDto); - productModelMap.put(model.getProductId(),basicTreeDtoList); - }else { + productModelMap.put(model.getProductId(), basicTreeDtoList); + } else { productModelMap.get(model.getProductId()).add(basicTreeDto); } } - if(model.getStructureTestObjectId() != null) { - if(CollectionUtils.isEmpty(testObjectModelMap.get(model.getStructureTestObjectId()))){ + if (model.getStructureTestObjectId() != null) { + if (CollectionUtils.isEmpty(testObjectModelMap.get(model.getStructureTestObjectId()))) { List<BasicTreeDto> basicTreeDtoList = new ArrayList<>(); basicTreeDtoList.add(basicTreeDto); - testObjectModelMap.put(model.getStructureTestObjectId(),basicTreeDtoList); - }else { + testObjectModelMap.put(model.getStructureTestObjectId(), basicTreeDtoList); + } else { testObjectModelMap.get(model.getStructureTestObjectId()).add(basicTreeDto); } } @@ -122,15 +122,15 @@ StructureTestObjectDto structureTestObjectDto = new StructureTestObjectDto(); BeanUtils.copyProperties(structureTestObject, structureTestObjectDto); List<BasicTreeDto> children = new ArrayList<>(); - if(!CollectionUtils.isEmpty(productMap.get(structureTestObject.getId()))){ + if (!CollectionUtils.isEmpty(productMap.get(structureTestObject.getId()))) { children.addAll(productMap.get(structureTestObject.getId())); } - if(!CollectionUtils.isEmpty(testObjectModelMap.get(structureTestObject.getId()))){ + if (!CollectionUtils.isEmpty(testObjectModelMap.get(structureTestObject.getId()))) { children.addAll(testObjectModelMap.get(structureTestObject.getId())); } structureTestObjectDto.setChildren(children); return structureTestObjectDto; - },Collectors.toList()) + }, Collectors.toList()) ) ) ); @@ -178,7 +178,7 @@ } } workShopTreeDto.setChildren(testObjectChildren); - if(!CollectionUtils.isEmpty(testObjectChildren)){ + if (!CollectionUtils.isEmpty(testObjectChildren)) { workShopTreeDtoList.add(workShopTreeDto); } } @@ -201,7 +201,7 @@ return laboratoryTreeDto; }).collect(Collectors.toList()); List<BasicTreeDto> factoryList = new ArrayList<>(); - factoryList.add(new BasicTreeDto(BasicTreeEnums.FACTORY_TYPE.getCode(),"涓ぉ绉戞妧","1",laboratoryTreeDtoList)); + factoryList.add(new BasicTreeDto(BasicTreeEnums.FACTORY_TYPE.getCode(), "涓ぉ绉戞妧", "1", laboratoryTreeDtoList)); return factoryList; } @@ -210,27 +210,27 @@ @Transactional(rollbackFor = Exception.class) public int addStandardTree(ModelAddDto modelAddDto) { // 鏍¢獙 - if(StringUtils.isEmpty(modelAddDto.getParentId())){ + if (StringUtils.isEmpty(modelAddDto.getParentId())) { throw new RuntimeException("缂哄皯鐖跺眰绾х粦瀹氬叧绯�"); } Model model = new Model(); String parentLevel = modelAddDto.getParentLevel(); // 鍚嶇О閲嶅鎬ф�ф牎楠� QueryWrapper<Model> modelQueryWrapper = new QueryWrapper<>(); - if(BasicTreeEnums.PRODUCT_TYPE.getCode().equals(parentLevel)){ + if (BasicTreeEnums.PRODUCT_TYPE.getCode().equals(parentLevel)) { model.setProductId(Integer.valueOf(modelAddDto.getParentId())); modelQueryWrapper.eq("product_id", model.getProductId()); - }else if(BasicTreeEnums.STRUCTURE_TEST_OBJECT_TYPE.getCode().equals(parentLevel)){ + } else if (BasicTreeEnums.STRUCTURE_TEST_OBJECT_TYPE.getCode().equals(parentLevel)) { model.setStructureTestObjectId(Integer.valueOf(modelAddDto.getParentId())); modelQueryWrapper.eq("structure_test_object_id", model.getStructureTestObjectId()); - }else { + } else { throw new RuntimeException("鍨嬪彿鍙兘缁戝畾瀵硅薄鍜屼骇鍝�"); } model.setModelName(modelAddDto.getModelName()); modelQueryWrapper.eq("model_name", model.getModelName()); Model modelResult = modelMapper.selectOne(modelQueryWrapper); - if(ObjectUtils.isNotEmpty(modelResult)){ + if (ObjectUtils.isNotEmpty(modelResult)) { throw new RuntimeException("璇峰嬁娣诲姞閲嶅鍨嬪彿"); } return modelMapper.insert(model); @@ -238,8 +238,8 @@ @Override @Transactional(rollbackFor = Exception.class) - public int delStandardTree(String level,String id) { - if(BasicTreeEnums.MODEL_TYPE.getCode().equals(level)){ + public int delStandardTree(String level, String id) { + if (BasicTreeEnums.MODEL_TYPE.getCode().equals(level)) { modelMapper.deleteById(id); } return 1; @@ -262,21 +262,21 @@ basicTreeDto.setValue(model.getModelName()); basicTreeDto.setLabel(model.getModelName()); basicTreeDto.setChildren(null); - if(model.getProductId() != null) { - if(CollectionUtils.isEmpty(productModelMap.get(model.getProductId()))){ + if (model.getProductId() != null) { + if (CollectionUtils.isEmpty(productModelMap.get(model.getProductId()))) { List<BasicTreeDto> basicTreeDtoList = new ArrayList<>(); basicTreeDtoList.add(basicTreeDto); - productModelMap.put(model.getProductId(),basicTreeDtoList); - }else { + productModelMap.put(model.getProductId(), basicTreeDtoList); + } else { productModelMap.get(model.getProductId()).add(basicTreeDto); } } - if(model.getStructureTestObjectId() != null) { - if(CollectionUtils.isEmpty(testObjectModelMap.get(model.getStructureTestObjectId()))){ + if (model.getStructureTestObjectId() != null) { + if (CollectionUtils.isEmpty(testObjectModelMap.get(model.getStructureTestObjectId()))) { List<BasicTreeDto> basicTreeDtoList = new ArrayList<>(); basicTreeDtoList.add(basicTreeDto); - testObjectModelMap.put(model.getStructureTestObjectId(),basicTreeDtoList); - }else { + testObjectModelMap.put(model.getStructureTestObjectId(), basicTreeDtoList); + } else { testObjectModelMap.get(model.getStructureTestObjectId()).add(basicTreeDto); } } @@ -296,8 +296,8 @@ // 瀵规娴嬪璞″厛鎸夌収瀹為獙瀹ゅ湪鎸夌収妫�鏌ュ璞$被鍒垎绫� List<BasicTreeDto> testProjectBasicTreeList = structureTestObjectList.stream().map(structureTestObject -> { BasicTreeDto basicTreeDto = new BasicTreeDto(); - basicTreeDto.setValue(structureTestObject.getSpecimenName()); - basicTreeDto.setLabel(structureTestObject.getSpecimenName()); + basicTreeDto.setValue(structureTestObject.getSpecimenName() + "(" + structureTestObject.getObjectType() + ")"); + basicTreeDto.setLabel(structureTestObject.getSpecimenName() + "(" + structureTestObject.getObjectType() + ")"); basicTreeDto.setLevel(BasicTreeEnums.STRUCTURE_TEST_OBJECT_TYPE.getCode()); List<BasicTreeDto> children = new ArrayList<>(); if (!CollectionUtils.isEmpty(productMap.get(structureTestObject.getId()))) { @@ -339,6 +339,7 @@ /** * 娌冲彛妫�娴嬩腑蹇冨鍏� + * * @param file */ @Override @@ -618,37 +619,38 @@ /** * 淇敼鏍囧噯鏁� + * * @param modelAddDto * @return */ @Override public int updateStandardTree(ModelAddDto modelAddDto) { - if(modelAddDto.getId() == null){ + if (modelAddDto.getId() == null) { throw new RuntimeException("缂哄皯鍨嬪彿涓婚敭"); } Model model = modelMapper.selectById(modelAddDto.getId()); - if(ObjectUtils.isEmpty(model)){ + if (ObjectUtils.isEmpty(model)) { throw new RuntimeException("鍨嬪彿鏌ユ壘澶辫触"); } QueryWrapper<Model> modelQueryWrapper = new QueryWrapper<>(); - if(model.getStructureTestObjectId() != null){ + if (model.getStructureTestObjectId() != null) { modelQueryWrapper.eq("structure_test_object_id", model.getStructureTestObjectId()); } - if(model.getProductId() != null){ + if (model.getProductId() != null) { modelQueryWrapper.eq("product_id", model.getProductId()); } modelQueryWrapper.eq("model_name", modelAddDto.getModelName()); model.setModelName(modelAddDto.getModelName()); List<Model> modelList = modelMapper.selectList(modelQueryWrapper); - if(CollectionUtils.isEmpty(modelList)){ + if (CollectionUtils.isEmpty(modelList)) { return modelMapper.updateById(model); - }else if (modelList.size() == 1) { - if( !model.getId().equals(modelList.get(0).getId())){ + } else if (modelList.size() == 1) { + if (!model.getId().equals(modelList.get(0).getId())) { throw new RuntimeException("鍨嬪彿鍚嶇О閲嶅"); - }else { + } else { return modelMapper.updateById(model); } - }else { + } else { throw new RuntimeException("鍨嬪彿鍚嶇О閲嶅"); } } diff --git a/basic-server/src/main/resources/mapper/StructureItemParameterMapper.xml b/basic-server/src/main/resources/mapper/StructureItemParameterMapper.xml index ae4ba83..bf8a74d 100644 --- a/basic-server/src/main/resources/mapper/StructureItemParameterMapper.xml +++ b/basic-server/src/main/resources/mapper/StructureItemParameterMapper.xml @@ -145,28 +145,46 @@ <result property="name" column="subclass"/> </resultMap> <select id="getInsProduction" resultMap="getInsProductions"> - select distinct id, - CASE - WHEN INSTR(sample, ',') > 0 THEN - SUBSTRING_INDEX(SUBSTRING_INDEX(sample, '","', 1), '"', -1) - when sample = '[""]' then '*' - ELSE - TRIM(BOTH '["]' FROM SUBSTRING_INDEX(REPLACE(sample, '[["', ''), '"]]', 1)) - END - as sample, - inspection_item, - case - when inspection_item_subclass is null or inspection_item_subclass = '' then inspection_item - else inspection_item_subclass end as subclass, - case - when inspection_item_class is null or inspection_item_class = '' then inspection_item - else inspection_item_class end as item_class - from structure_item_parameter + SELECT DISTINCT + id, + CASE + WHEN INSTR(sample, ',') > 0 THEN + TRIM(BOTH '"' FROM SUBSTRING_INDEX(SUBSTRING_INDEX(sample, '","', - 1), '"]]', 1)) + WHEN sample = '[""]' THEN + '*' + ELSE + TRIM(BOTH '["]' FROM SUBSTRING_INDEX(REPLACE(sample, '[["', ''), '"]]', 1)) + END AS sample, + inspection_item, + CASE + WHEN inspection_item_subclass IS NULL + OR TRIM(inspection_item_subclass) = '' THEN + inspection_item + ELSE + inspection_item_subclass + END AS subclass, + CASE + WHEN inspection_item_class IS NULL + OR TRIM(inspection_item_class) = '' THEN + inspection_item + ELSE + inspection_item_class + END AS item_class + FROM + structure_item_parameter; </select> <select id="getItemTree" resultMap="itemDto"> - select sto.id sId, sto.specimen_name sName, p.id pId, p.name pName - from structure_test_object sto - left join product p on p.object_id = sto.id + SELECT + sto.id AS sId, + CONCAT(sto.specimen_name, ' (', sto.object_type, ')') AS sName, + p.id AS pId, + p.name AS pName, + sto.object_type + FROM + structure_test_object sto + LEFT JOIN + product p + ON p.object_id = sto.id; </select> <resultMap id="itemDto" type="com.ruoyi.basic.dto.TestItemDto"> diff --git a/ruoyi-admin/src/main/resources/application-test.yml b/ruoyi-admin/src/main/resources/application-test.yml index 72465d6..d7c8033 100644 --- a/ruoyi-admin/src/main/resources/application-test.yml +++ b/ruoyi-admin/src/main/resources/application-test.yml @@ -143,16 +143,16 @@ # 浜轰簨绯荤粺 personnel: # 姝e紡鍦板潃 - code: + code: https://ztt-sso.ztt.cn/oauth2/token # 瑁呭浜轰簨姝e紡搴� - appId: - appSecret: - companies: - simple: + appId: f6f3d70f-3666-4d3d-b9c5-430de3f6007c + appSecret: a18923496542302066b0a7bec993a4e2 + companies: https://ztt-connector.ztt.cn/api/org/v1/companies + simple: https://ztt-connector.ztt.cn/api/org/v1/employees/simple?companyId= # 浜哄憳瀵嗙爜鑾峰彇 - password: - department: - person: + password: https://ztt-connector.ztt.cn/api/org/v1/employees/original_pwd/ + department: https://ztt-connector.ztt.cn/api/org/v1/companies/companyId/departments + person: https://ztt-connector.ztt.cn/api/org/v1/employees/simple/ ifs: contract: diff --git a/ruoyi-system/src/main/resources/mapper/system/UserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/UserMapper.xml index 8c743c8..ed96594 100644 --- a/ruoyi-system/src/main/resources/mapper/system/UserMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/UserMapper.xml @@ -24,8 +24,7 @@ company, is_custom from user - where del_flag = '0' - and id != ) a + where del_flag = '0') a <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''"> ${ew.customSqlSegment} </if> -- Gitblit v1.9.3