basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java
@@ -18,6 +18,7 @@
import com.ruoyi.basic.mapper.StandardProductListMapper;
import com.ruoyi.basic.mapper.StandardTreeMapper;
import com.ruoyi.basic.mapper.StandardTreeTemplateBindingMapper;
import com.ruoyi.basic.mapper.StandardTreeTemplateDeviceMapper;
import com.ruoyi.basic.mapper.StructureItemParameterMapper;
import com.ruoyi.basic.mapper.StructureTestObjectMapper;
import com.ruoyi.basic.pojo.Laboratory;
@@ -25,6 +26,7 @@
import com.ruoyi.basic.pojo.StandardTree;
import com.ruoyi.basic.pojo.StandardTemplate;
import com.ruoyi.basic.pojo.StandardTreeTemplateBinding;
import com.ruoyi.basic.pojo.StandardTreeTemplateDevice;
import com.ruoyi.basic.pojo.StructureItemParameter;
import com.ruoyi.basic.pojo.StructureTestObject;
import com.ruoyi.basic.service.StandardTreeService;
@@ -45,6 +47,7 @@
import java.util.HashSet;
import java.util.Comparator;
import java.util.Set;
import java.util.stream.Collectors;
/**
 * @author Administrator
@@ -68,6 +71,8 @@
    private LaboratoryMapper laboratoryMapper;
    private StandardTreeTemplateBindingMapper standardTreeTemplateBindingMapper;
    private StandardTreeTemplateDeviceMapper standardTreeTemplateDeviceMapper;
    private StandardTemplateService standardTemplateService;
@@ -204,6 +209,8 @@
        }
        standardTreeTemplateBindingMapper.delete(Wrappers.<StandardTreeTemplateBinding>lambdaQuery()
                .eq(StandardTreeTemplateBinding::getStandardTreeId, standardTree.getId()));
        standardTreeTemplateDeviceMapper.delete(Wrappers.<StandardTreeTemplateDevice>lambdaQuery()
                .eq(StandardTreeTemplateDevice::getStandardTreeId, standardTree.getId()));
        standardTreeMapper.deleteById(standardTree.getId());
        standardProductListMapper.delete(Wrappers.<StandardProductList>lambdaQuery()
                .eq(StandardProductList::getLaboratory, industry)
@@ -384,6 +391,15 @@
                Wrappers.<StandardTreeTemplateBinding>lambdaQuery()
                        .eq(StandardTreeTemplateBinding::getStandardTreeId, standardTreeId)
                        .orderByAsc(StandardTreeTemplateBinding::getSort, StandardTreeTemplateBinding::getId));
        Map<Integer, List<Integer>> deviceIdsByTemplate = standardTreeTemplateDeviceMapper.selectList(
                        Wrappers.<StandardTreeTemplateDevice>lambdaQuery()
                                .eq(StandardTreeTemplateDevice::getStandardTreeId, standardTreeId)
                                .orderByAsc(StandardTreeTemplateDevice::getSort,
                                        StandardTreeTemplateDevice::getId))
                .stream().collect(Collectors.groupingBy(
                        StandardTreeTemplateDevice::getTemplateId,
                        LinkedHashMap::new,
                        Collectors.mapping(StandardTreeTemplateDevice::getDeviceId, Collectors.toList())));
        List<StandardTreeTemplateBindingVo> result = new ArrayList<>();
        for (StandardTreeTemplateBinding binding : bindings) {
            StandardTemplate template = standardTemplateService.getById(binding.getTemplateId());
@@ -396,6 +412,7 @@
            vo.setNumber(template.getNumber());
            vo.setRemark(template.getRemark());
            vo.setSort(binding.getSort());
            vo.setDeviceIds(deviceIdsByTemplate.getOrDefault(template.getId(), new ArrayList<>()));
            result.add(vo);
        }
        return result;
@@ -410,6 +427,7 @@
        ensureTwoLevelStandard(dto.getStandardTreeId());
        List<TemplateBindingItemDto> templates = dto.getTemplates() == null ? new ArrayList<>() : dto.getTemplates();
        Set<Integer> templateIds = new HashSet<>();
        Set<Integer> allDeviceIds = new HashSet<>();
        List<StandardTreeTemplateBinding> bindings = new ArrayList<>();
        int index = 0;
        for (TemplateBindingItemDto item : templates) {
@@ -425,12 +443,38 @@
            binding.setTemplateId(item.getTemplateId());
            binding.setSort(item.getSort() == null ? index : item.getSort());
            bindings.add(binding);
            if (item.getDeviceIds() != null) {
                allDeviceIds.addAll(item.getDeviceIds().stream()
                        .filter(Objects::nonNull).collect(Collectors.toSet()));
            }
            index++;
        }
        if (!allDeviceIds.isEmpty()) {
            List<Integer> requestedDeviceIds = new ArrayList<>(allDeviceIds);
            if (standardTreeTemplateDeviceMapper.selectExistingDeviceIds(requestedDeviceIds).size()
                    != requestedDeviceIds.size()) {
                throw new BaseException("所选设备不存在,请刷新设备列表后重试");
            }
        }
        standardTreeTemplateDeviceMapper.delete(Wrappers.<StandardTreeTemplateDevice>lambdaQuery()
                .eq(StandardTreeTemplateDevice::getStandardTreeId, dto.getStandardTreeId()));
        standardTreeTemplateBindingMapper.delete(Wrappers.<StandardTreeTemplateBinding>lambdaQuery()
                .eq(StandardTreeTemplateBinding::getStandardTreeId, dto.getStandardTreeId()));
        for (StandardTreeTemplateBinding binding : bindings) {
        for (int bindingIndex = 0; bindingIndex < bindings.size(); bindingIndex++) {
            StandardTreeTemplateBinding binding = bindings.get(bindingIndex);
            standardTreeTemplateBindingMapper.insert(binding);
            TemplateBindingItemDto item = templates.get(bindingIndex);
            List<Integer> deviceIds = item.getDeviceIds() == null ? new ArrayList<>()
                    : item.getDeviceIds().stream().filter(Objects::nonNull).distinct()
                            .collect(Collectors.toList());
            for (int deviceIndex = 0; deviceIndex < deviceIds.size(); deviceIndex++) {
                StandardTreeTemplateDevice relation = new StandardTreeTemplateDevice();
                relation.setStandardTreeId(dto.getStandardTreeId());
                relation.setTemplateId(item.getTemplateId());
                relation.setDeviceId(deviceIds.get(deviceIndex));
                relation.setSort(deviceIndex);
                standardTreeTemplateDeviceMapper.insert(relation);
            }
        }
        return true;
    }