From c79f68a2a71cc8cc181525d233ef419745ee3d27 Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期二, 04 三月 2025 13:24:55 +0800 Subject: [PATCH] 原始记录模版修改 --- basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java | 535 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 535 insertions(+), 0 deletions(-) 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 new file mode 100644 index 0000000..b64ab41 --- /dev/null +++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java @@ -0,0 +1,535 @@ +package com.ruoyi.basic.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.poi.excel.ExcelUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.exception.base.BaseException; +import com.ruoyi.basic.dto.FactoryDto; +import com.ruoyi.basic.dto.LaboratoryDto; +import com.ruoyi.basic.dto.SampleTypeDto; +import com.ruoyi.basic.mapper.StandardProductListMapper; +import com.ruoyi.basic.mapper.StandardTreeMapper; +import com.ruoyi.basic.pojo.StandardProductList; +import com.ruoyi.basic.pojo.StandardTemplate; +import com.ruoyi.basic.pojo.StandardTree; +import com.ruoyi.basic.pojo.StructureTestObject; +import com.ruoyi.basic.service.*; +import lombok.AllArgsConstructor; +import org.apache.commons.lang3.ObjectUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; + +/** + * @author Administrator + * @description 閽堝琛ㄣ�恠tandard_tree(鏍囧噯鏍�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇 + * @createDate 2024-03-01 15:06:44 + */ +@Service +@AllArgsConstructor +public class StandardTreeServiceImpl extends ServiceImpl<StandardTreeMapper, StandardTree> + implements StandardTreeService { + + + private StandardTreeMapper standardTreeMapper; + + private StandardMethodListService standardMethodListService; + + private StandardProductListMapper standardProductListMapper; + + private StandardProductListService standardProductListService; + + private StandardTemplateService standardTemplateService; + + private StructureTestObjectService structureTestObjectService; + + + @Override + public List<FactoryDto> selectStandardTreeList() { + List<FactoryDto> factoryDtos = standardTreeMapper.selectStandardTreeList(); + for (FactoryDto factoryDto : factoryDtos) { + for (LaboratoryDto laboratoryDto : factoryDto.getChildren()) { + laboratoryDto.getChildren().sort((o1, o2) -> (o1.getSort() == null ? 0 : o1.getSort()) + - (o2.getSort() == null ? 0 : o2.getSort())); + for (SampleTypeDto sampleTypeDto : laboratoryDto.getChildren()) { +// if (sampleTypeDto.getChildren().size() == 0) { + sampleTypeDto.getChildren().addAll(standardTreeMapper.getStandardTree3(sampleTypeDto.getValue())); +// } + } + } + } + return factoryDtos; + } + + + + @Override + @Transactional(rollbackFor = Exception.class) + public int addStandardTree(StandardTree standardTree) { + LambdaQueryWrapper<StandardTree> wrapper = Wrappers.<StandardTree>lambdaQuery() + .eq(StandardTree::getFactory, standardTree.getFactory()) + .eq(StandardTree::getLaboratory, standardTree.getLaboratory()) + .eq(StandardTree::getSampleType, standardTree.getSampleType()) + .eq(StandardTree::getSample, standardTree.getSample()) + .eq(StandardTree::getModel, standardTree.getModel()); + if (StringUtils.isNotBlank(standardTree.getSample())) { + wrapper.eq(StandardTree::getSample, standardTree.getSample()); + } + + StandardTree tree = standardTreeMapper.selectOne(wrapper); + if (tree != null) { + throw new BaseException("璇ュ瀷鍙峰凡瀛樺湪"); + } + return standardTreeMapper.insert(standardTree); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public int delStandardTree(String tree) { + String[] trees = tree.split(" - "); + switch (trees.length) { + case 5: + if (trees[3].equals("null")) { + standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]).isNull(StandardTree::getSample).eq(StandardTree::getModel, trees[4])); + } else { + standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]).eq(StandardTree::getSample, trees[3]).eq(StandardTree::getModel, trees[4])); + } + break; + /*case 4: + standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]).eq(StandardTree::getSample, trees[3])); + break; + case 3: + standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2])); + break; + case 2: + standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1])); + break; + case 1: + standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0])); + break;*/ + } + return 1; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public int addStandardProduct(String ids, String tree) { + String[] trees = tree.split(" - "); + JSONArray jsonArray = JSON.parseArray(ids); + for (Object o : jsonArray) { + StandardProductList standardProductList = standardTreeMapper.selectStandardProductById(Integer.parseInt("" + o)); + standardProductList.setFactory(trees[0]); + try { + standardProductList.setLaboratory(trees[1]); + } catch (Exception e) { + } + try { + standardProductList.setSampleType(trees[2]); + } catch (Exception e) { + } + try { + standardProductList.setSample(trees[3]); + } catch (Exception e) { + } + try { + standardProductList.setModel(trees[4]); + } catch (Exception e) { + } + standardProductListMapper.insert(standardProductList); + } + return 1; + } + + @Override + public List<SampleTypeDto> getStandardTree2() { + return standardTreeMapper.getStandardTree2(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public int upStandardProducts(Map<String, Object> product) { + List<Integer> ids = JSON.parseArray(product.get("ids") + ""); + StandardProductList productList = JSON.parseObject(JSON.toJSONString(product.get("standardProductList")), StandardProductList.class); + if (productList.getMethodS() != null) { + standardProductListMapper.update(productList, Wrappers.<StandardProductList>lambdaUpdate().in(StandardProductList::getId, ids).like(StandardProductList::getMethod, productList.getMethodS())); + return 1; + } + if (productList.getRadiusList() != null) { + standardProductListMapper.update(productList, Wrappers.<StandardProductList>lambdaUpdate().in(StandardProductList::getId, ids).like(StandardProductList::getRadiusList, productList.getRadius())); + return 1; + } + standardProductListMapper.update(productList, Wrappers.<StandardProductList>lambdaUpdate().in(StandardProductList::getId, ids)); + return 1; + } + + @Override + public List<StandardTree> getStandTreeBySampleType(String laboratory, String sampleType) { + return standardTreeMapper.selectList(Wrappers.<StandardTree>lambdaQuery() + .eq(StandardTree::getLaboratory, laboratory) + .eq(StandardTree::getSampleType, sampleType) + .select(StandardTree::getModel, StandardTree::getSample)); + } + + /** + * 娌冲彛妫�娴嬩腑蹇冨鍏� + * @param file + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void inExcelOfTree(MultipartFile file) { + InputStream inputStream; + try { + inputStream = file.getInputStream(); + } catch (IOException e) { + throw new RuntimeException(e); + } + List<StandardProductList> lists = new ArrayList<>(); + AtomicReference<String> laboratory = new AtomicReference<>(); + ExcelUtil.readBySax(inputStream, 0, (i, l, list) -> { + StandardProductList str = new StandardProductList(); + if (i == 0 && l == 1) { + laboratory.set(standardTreeMapper.getLaboratory(list.get(1) + "")); + if (laboratory.get() == null) { + throw new BaseException("妫�楠屽璞′笉瀛樺湪锛�" + list.get(1)); + } + } + if (i == 0 && l >= 1) { + Integer standardMethodId = standardMethodListService.getStandardMethodId(list.get(0) + ""); + if (standardMethodId == null) { + throw new BaseException("鏍囧噯缂栧彿涓嶅瓨鍦細" + list.get(0)); + } + str.setStandardMethodListId(standardMethodId); + str.setSampleType(list.get(1) + ""); + if (list.get(2) != null) { + String sample = baseMapper.selSample(list.get(2) + ""); + if (sample == null) { + throw new BaseException("鏍峰搧涓嶅瓨鍦細" + list.get(2)); + } + str.setSample(list.get(2) + ""); + } else { + str.setSample(null); + } + if (list.get(3) != null) { + str.setModel(list.get(3) + ""); + Long aLong = standardTreeMapper.selectCount(Wrappers.<StandardTree>lambdaQuery() + .eq(StandardTree::getModel, str.getModel()) + .eq(StandardTree::getSampleType, list.get(1) + "")); + if (aLong == 0) { + StandardTree standardTree = new StandardTree(); + standardTree.setFactory("涓ぉ绉戞妧妫�娴嬩腑蹇�"); + standardTree.setLaboratory(laboratory.get()); + standardTree.setSampleType(str.getSampleType()); + standardTree.setSample(str.getSample()); + standardTree.setModel(str.getModel()); + standardTreeMapper.insert(standardTree); + } + } else { + str.setModel(null); + } + str.setInspectionItem(list.get(4) + ""); + if (list.get(6) == null) { + str.setInspectionItemSubclass(""); + } else { + str.setInspectionItemSubclass(list.get(6).toString()); + } + StandardProductList db_str; + try { + db_str = standardProductListMapper.getOne(str.getStandardMethodListId(), str.getInspectionItem(), str.getSample(), str.getInspectionItemSubclass(), str.getModel(), str.getInspectionItemClass()); + } catch (Exception e) { + throw new BaseException("閲嶅鏌ヨ锛�" + str.getInspectionItem() + " " + str.getInspectionItemSubclass()); + } + if (ObjectUtils.isNotEmpty(db_str)) { + str.setId(db_str.getId()); + str.setStructureItemParameterId(db_str.getStructureItemParameterId()); + } + if (list.get(8) != null) { + str.setMethodS(list.get(8) + ""); + } + + if (list.get(11) == null) { + str.setTell(null); + } else { + str.setTell(list.get(11).toString()); + } + + if (list.get(12) == null) { + str.setAsk(null); + } else { + str.setAsk(list.get(12).toString()); + } + + if (list.get(13) == null) { + str.setPrice(null); + } else { + str.setPrice((list.get(13).toString())); + } + + if (list.get(14) == null) { + str.setManHour(null); + } else { + str.setManHour(list.get(14).toString()); + } + + StandardTemplate standTempIdByName = standardTemplateService.getStandTempIdByName(String.valueOf(list.get(21))); + if (standTempIdByName != null) { + str.setTemplateId(standTempIdByName.getId()); + } else { + throw new BaseException("妯℃澘涓嶅瓨鍦細" + list.get(21)); + } + str.setFactory("涓ぉ绉戞妧妫�娴嬩腑蹇�"); + str.setLaboratory(laboratory.get()); + str.setState(1); + str.setTree(str.getFactory() + " - " + str.getLaboratory() + " - " + str.getSampleType() + " - " + str.getSample() + " - " + (str.getModel() == null ? "" : str.getModel())); + try { + str.setStructureItemParameterId(standardTreeMapper.getStructureItemParameterId("\"" + str.getSampleType() + "\"", str.getInspectionItem(), str.getInspectionItemSubclass(), str.getInspectionItemClass())); + } catch (Exception e) { + str.setStructureItemParameterId(standardTreeMapper.getStructureItemParameterId("\"" + str.getSampleType() + "\",\"" + str.getSample() + "\"", str.getInspectionItem(), str.getInspectionItemSubclass(), str.getInspectionItemClass())); + } + if (str.getStructureItemParameterId() == null) { + throw new BaseException("妫�楠岄」鐩笉瀛樺湪锛�" + str.getInspectionItem() + " " + str.getInspectionItemSubclass()); + } + lists.add(str); + } + }); + lists.forEach(a -> { + if (a.getId() != null) { + standardProductListMapper.updateById(a); + } else { + standardProductListMapper.insert(a); + } + }); + } + + @Override + public void importWorkstationExcel(MultipartFile file) { + InputStream inputStream; + try { + inputStream = file.getInputStream(); + } catch (IOException e) { + throw new RuntimeException(e); + } + List<StandardProductList> lists = new ArrayList<>(); + AtomicReference<String> laboratory = new AtomicReference<>(); + ExcelUtil.readBySax(inputStream, 0, (i, l, list) -> { + StandardProductList str = new StandardProductList(); + if (i == 0 && l == 1) { + laboratory.set(standardTreeMapper.getLaboratory(list.get(1) + "")); + if (laboratory.get() == null) { + throw new BaseException("妫�楠屽璞′笉瀛樺湪锛�" + list.get(1)); + } + } + if (i == 0 && l >= 1) { + Integer standardMethodId = standardMethodListService.getStandardMethodId(list.get(0) + ""); + if (standardMethodId == null) { + throw new BaseException("鏍囧噯缂栧彿涓嶅瓨鍦細" + list.get(0)); + } + str.setStandardMethodListId(standardMethodId); + str.setSampleType(list.get(1) + ""); + if (list.get(2) != null) { + String sample = baseMapper.selSample(list.get(2) + ""); + if (sample == null) { + throw new BaseException("鏍峰搧涓嶅瓨鍦細" + list.get(2)); + } + str.setSample(list.get(2) + ""); + } else { + str.setSample(null); + } + if (list.get(3) != null) { + str.setModel(list.get(3) + ""); + Long aLong = standardTreeMapper.selectCount(Wrappers.<StandardTree>lambdaQuery() + .eq(StandardTree::getModel, str.getModel()) + .eq(StandardTree::getSampleType, list.get(1) + "")); + if (aLong == 0) { + StandardTree standardTree = new StandardTree(); + standardTree.setFactory("涓ぉ绉戞妧妫�娴嬩腑蹇�"); + standardTree.setLaboratory(laboratory.get()); + standardTree.setSampleType(str.getSampleType()); + standardTree.setSample(str.getSample()); + standardTree.setModel(str.getModel()); + standardTreeMapper.insert(standardTree); + } + } else { + str.setModel(null); + } + str.setInspectionItemClass(list.get(4).toString()); + str.setInspectionItemClassEn(list.get(5).toString()); + // 寮�濮嬪姞2 + str.setInspectionItem(list.get(6) + ""); + if (list.get(8) == null) { + str.setInspectionItemSubclass(""); + } else { + str.setInspectionItemSubclass(list.get(8).toString()); + } + StandardProductList db_str; + try { + db_str = standardProductListMapper.getOne(str.getStandardMethodListId(), str.getInspectionItem(), str.getSample(), str.getInspectionItemSubclass(), str.getModel(), str.getInspectionItemClass()); + } catch (Exception e) { + throw new BaseException("閲嶅鏌ヨ锛�" + str.getInspectionItem() + " " + str.getInspectionItemSubclass()); + } + if (ObjectUtils.isNotEmpty(db_str)) { + str.setId(db_str.getId()); + str.setStructureItemParameterId(db_str.getStructureItemParameterId()); + } + if (list.get(10) != null) { + str.setMethodS(list.get(10) + ""); + } + if (list.get(13) == null) { + str.setTell(null); + } else { + str.setTell(list.get(13).toString()); + } + + if (list.get(14) == null) { + str.setAsk(null); + } else { + str.setAsk(list.get(14).toString()); + } + + if (list.get(15) == null) { + str.setPrice(null); + } else { + str.setPrice((list.get(15).toString())); + } + + if (list.get(16) == null) { + str.setManHour(null); + } else { + str.setManHour(list.get(16).toString()); + } + + StandardTemplate standTempIdByName = standardTemplateService.getStandTempIdByName(String.valueOf(list.get(23))); + if (standTempIdByName != null) { + str.setTemplateId(standTempIdByName.getId()); + } else { + throw new BaseException("妯℃澘涓嶅瓨鍦細" + list.get(23)); + } + str.setFactory("涓ぉ绉戞妧妫�娴嬩腑蹇�"); + str.setLaboratory(laboratory.get()); + str.setState(1); + str.setTree(str.getFactory() + " - " + str.getLaboratory() + " - " + str.getSampleType() + " - " + str.getSample() + " - " + (str.getModel() == null ? "" : str.getModel())); + try { + str.setStructureItemParameterId(standardTreeMapper.getStructureItemParameterId("\"" + str.getSampleType() + "\"", str.getInspectionItem(), str.getInspectionItemSubclass(), str.getInspectionItemClass())); + } catch (Exception e) { + str.setStructureItemParameterId(standardTreeMapper.getStructureItemParameterId("\"" + str.getSampleType() + "\",\"" + str.getSample() + "\"", str.getInspectionItem(), str.getInspectionItemSubclass(), str.getInspectionItemClass())); + } + if (str.getStructureItemParameterId() == null) { + throw new BaseException("妫�楠岄」鐩笉瀛樺湪锛�" + str.getInspectionItem() + " " + str.getInspectionItemSubclass()); + } + lists.add(str); + } + }); + lists.forEach(a -> { + if (a.getId() != null) { + standardProductListMapper.updateById(a); + } else { + standardProductListMapper.insert(a); + } + }); + } + + @Override + public boolean updateTreeSort(List<FactoryDto> list) { + List<StructureTestObject> testObjects = new ArrayList<>(); + for (FactoryDto factoryDto : list) { + for (LaboratoryDto laboratoryDto : factoryDto.getChildren()) { + List<SampleTypeDto> children = laboratoryDto.getChildren(); + int sort = 0; + // 寰幆绗笁灞� + for (SampleTypeDto child : children) { + StructureTestObject structureTestObject = new StructureTestObject(); + structureTestObject.setSort(sort); + structureTestObject.setId(child.getSampleTypeId()); + testObjects.add(structureTestObject); + sort++; + } + } + } + structureTestObjectService.updateBatchById(testObjects); + + return true; + } + + /** + * 淇敼鏍囧噯鏁� + * @param standardTree + * @return + */ + @Override + public int updateStandardTree(StandardTree standardTree) { + // 淇敼鍚嶇О鍖归厤鐨勬爣鍑嗘爲涓嬬殑妫�楠岄」鐩� + // 鏌ヨ鎵�鏈夊璞�+鍚嶇О鐨勬爲 + + List<StandardProductList> standardProductLists = standardProductListService.list(Wrappers.<StandardProductList>lambdaUpdate() + .eq(StandardProductList::getSample, standardTree.getSample()) + .eq(StandardProductList::getSampleType, standardTree.getSampleType()) + .eq(StandardProductList::getModel, standardTree.getOldModel())); + if (CollectionUtils.isNotEmpty(standardProductLists)) { + for (StandardProductList standardProductList : standardProductLists) { + // 淇敼鏍峰搧鍚嶇О + standardProductList.setModel(standardTree.getModel()); + // 淇敼鏍戝悕绉� + // 闇�瑕佹埅鍙栫鍥涚骇, 閬垮厤涓夊洓绾у悕绉颁竴鏍蜂慨鏀归敊璇� + String[] trees = standardProductList.getTree().split(" - "); + trees[4] = standardTree.getModel(); + List<String> list = CollUtil.newArrayList(trees); + String newName = CollUtil.join(list, " - "); + standardProductList.setTree(newName); + } + standardProductListService.updateBatchById(standardProductLists); + } + + // 淇敼鏍囧噯鏁版楠岄」鐩� + LambdaUpdateWrapper<StandardTree> wrapper = Wrappers.<StandardTree>lambdaUpdate() + .eq(StandardTree::getFactory, standardTree.getFactory()) + .eq(StandardTree::getLaboratory, standardTree.getLaboratory()) + .eq(StandardTree::getSampleType, standardTree.getSampleType()) + .eq(StandardTree::getModel, standardTree.getOldModel()) + .set(StandardTree::getModel, standardTree.getModel()); + if (StringUtils.isNotBlank(standardTree.getSample())) { + wrapper.eq(StandardTree::getSample, standardTree.getSample()); + } + return standardTreeMapper.update(null, wrapper); + } + + @Override + public void resetTreeOfPrice(String tree, Integer standardId) { + standardProductListMapper.update(null, Wrappers.<StandardProductList>lambdaUpdate().like(StandardProductList::getTree, tree).eq(StandardProductList::getStandardMethodListId, standardId).set(StandardProductList::getPrice, null)); + } + + @Override + public void resetTreeOfHour(String tree, Integer standardId) { + standardProductListMapper.update(null, Wrappers.<StandardProductList>lambdaUpdate().like(StandardProductList::getTree, tree).eq(StandardProductList::getStandardMethodListId, standardId).set(StandardProductList::getManHour, null)); + } + + @Override + public void resetTreeOfAsk(String tree, Integer standardId) { + standardProductListMapper.update(null, Wrappers.<StandardProductList>lambdaUpdate().like(StandardProductList::getTree, tree).eq(StandardProductList::getStandardMethodListId, standardId) + .set(StandardProductList::getAsk, null) + .set(StandardProductList::getTell, null) + .set(StandardProductList::getSection, null) + .set(StandardProductList::getCores, null) + .set(StandardProductList::getConductorMaterial, null) + .set(StandardProductList::getConductorType, null) + .set(StandardProductList::getPrice, null) + .set(StandardProductList::getManHour, null)); + } + +} + + + + -- Gitblit v1.9.3