zss
2024-07-31 0e2e829f10a5e5b239d6583d6be3afbcaed0dcc0
inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardProductListServiceImpl.java
@@ -1,6 +1,6 @@
package com.yuanchu.mom.service.impl;
import cn.hutool.core.lang.Console;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -11,6 +11,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.dto.ProductDto;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.StandardProductListMapper;
import com.yuanchu.mom.mapper.StandardTreeMapper;
import com.yuanchu.mom.pojo.InsSample;
@@ -20,6 +21,7 @@
import com.yuanchu.mom.service.StandardProductListService2;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.*;
@@ -59,8 +61,6 @@
    @Override
    public List<StandardProductList> selectStandardProductList(InsSample insSample) {
        String[] models = insSample.getModel().split("-(?=[^-]*$)");//拆分最后一个【-】
//        String[] factorys = insSample.getFactory().split(" - ");
        //List<StandardProductList> list = standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery().eq(StandardProductList::getStandardMethodListId, insSample.getStandardMethodListId()).eq(StandardProductList::getState, 1).eq(StandardProductList::getModel, models[0]).eq(StandardProductList::getSampleType, factorys[2]));
        List<StandardProductList> list = standardProductListMapper.selectDetail(insSample.getStandardMethodListId(), 1, models[0]);
        if (list.size() == 0) {
            if (Objects.equals(insSample.getFactory(), "") || insSample.getFactory() == null) {
@@ -69,12 +69,13 @@
            String[] split = insSample.getFactory().split(" - ");
            String tree = split[0] + " - " + split[1] + " - " + split[2] + " - " + split[3] + " - null";
            list = standardProductListMapper.selectDetail2(insSample.getStandardMethodListId(), 1, tree);
            /* list = standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery()
                    .eq(StandardProductList::getStandardMethodListId, insSample.getStandardMethodListId())
                    .eq(StandardProductList::getState, 1)
                    .like(StandardProductList::getTree, split[0] + " - " + split[1] + " - " + split[2] + " - " + split[3]));*/
            if (list.size()==0){
                String tree1 = split[0] + " - " + split[1] + " - " + split[2] + " - null - " + split[3] ;
                list = standardProductListMapper.selectDetail2(insSample.getStandardMethodListId(), 1, tree1);
            }
        }
        String[] split1 = insSample.getFactory().split(" - ");
        list = list.stream().filter(list1 -> list1.getSample().equals(split1[3])).collect(Collectors.toList());
        list = list.stream().filter(a -> {
            try {
                if (a.getSection() != null && !Objects.equals(a.getSection(), "")) {
@@ -119,6 +120,7 @@
        String model2 = "";
        while (matcher.find()) {
            model2 += matcher.group();
            break;
        }
        if (str.contains("≥") || str.contains(">=")) {
            String param = str.replace("≥", "").replace(">=", "");
@@ -140,8 +142,14 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Map<String, Object> selectStandardProductListByMethodId(Integer id, String tree, Integer page) {
        String[] trees = tree.split(" - ");
        try{
            String tree1 = trees[2];
        }catch (Exception e){
            throw new ErrorException("操作太快,系统传参错误!!!!");
        }
        List<StandardProductList> list = new ArrayList<>();
        if (trees.length == 3) {
            List<StandardTree> treeList = new ArrayList<>();
@@ -238,13 +246,48 @@
        }
        if (page == 1) {
            Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
            CompletableFuture.supplyAsync(() -> {
//            CompletableFuture.supplyAsync(() -> {
                System.out.println("开始开始开始开始!!!!!!!!!!");
                if (trees.length == 5) {
                    standardProductListMapper.delete(Wrappers.<StandardProductList>lambdaUpdate().eq(StandardProductList::getStandardMethodListId, id).eq(StandardProductList::getTree, tree));
                    standardProductListMapper.delete(Wrappers.<StandardProductList>lambdaUpdate()
                            .eq(StandardProductList::getStandardMethodListId, id)
                            .eq(StandardProductList::getTree, tree));
                } else {
                    standardProductListMapper.delete(Wrappers.<StandardProductList>lambdaUpdate().eq(StandardProductList::getStandardMethodListId, id).like(StandardProductList::getTree, tree));
                    standardProductListMapper.delete(Wrappers.<StandardProductList>lambdaUpdate()
                            .eq(StandardProductList::getStandardMethodListId, id)
                            .like(StandardProductList::getTree, tree));
                }
                standardProductListService2.saveBatch(list.stream().map(a -> {
                boolean success = false;
                int retryCount = 0;
                while (!success && retryCount < 100) {
                    try {
                        standardProductListService2.saveBatch(list.stream().map(a -> {
                            a.setFactory(trees[0]);
                            a.setLaboratory(trees[1]);
                            a.setSampleType(trees[2]);
                            a.setCreateUser(userId);
                            a.setUpdateUser(userId);
                            a.setStandardMethodListId(id);
                            return a;
                        }).collect(Collectors.toList()));;
                        success = true;
                    } catch (Exception e) {
                        retryCount++;
                        System.out.println("重复"+ retryCount+"次");
                        // 处理重复 ID 的记录,重新生成 ID 并继续尝试插入
                        for (StandardProductList productList : list) {
                            productList.setId(IdWorker.getId());
                        }
                    }
                }
                if (!success) {
                    throw new RuntimeException("插入失败");
                }else {
                    System.out.println("结束结束结束结束@@@@@@@@@@@@");
                }
             /*   standardProductListService2.saveBatch(list.stream().map(a -> {
                    a.setFactory(trees[0]);
                    a.setLaboratory(trees[1]);
                    a.setSampleType(trees[2]);
@@ -252,13 +295,13 @@
                    a.setUpdateUser(userId);
                    a.setStandardMethodListId(id);
                    return a;
                }).collect(Collectors.toList()));
                return null;
            }).thenAccept(res -> {
            }).exceptionally(e -> {
                e.printStackTrace();
                return null;
            });
                }).collect(Collectors.toList()));*/
//                return null;
//            }).thenAccept(res -> {
//            }).exceptionally(e -> {
//                e.printStackTrace();
//                return null;
//            });
        }
        Map<String, Object> map = new HashMap<>();
        Collections.sort(list, (o1, o2) -> {