cd44522023ba6fece1d93670bfef5f73b5d09f57..076112ac1d106e64e625c54f2fbb32dc0eafea42
4 天以前 cl
修改采集内容
076112 对比 | 目录
5 天以前 cl
修改采集内容
022e1e 对比 | 目录
已修改4个文件
540 ■■■■■ 文件已修改
jcdm-admin/src/main/resources/application-druid.yml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/constant/Constants.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java 518 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-admin/src/main/resources/application-druid.yml
@@ -18,12 +18,12 @@
            master:
#                url: jdbc:sqlserver://192.168.0.189:1433;DataBaseName=Jcdm042-Mes
#                url: jdbc:sqlserver://183.134.244.158:1433;DataBaseName=Jcdm042-Mes
                url: jdbc:sqlserver://127.0.0.1:1433;DataBaseName=Jcdm042-Mes-module
                url: jdbc:sqlserver://192.168.0.189:1433;DataBaseName=Jcdm042-Mes-module
                username: sa
#                password: JCDM@2023
                password: JCDM@2023
#                password: admin@123
#                password: 1!deshine
                password: 123456
#                password: 123456
            # 从库数据源
jcdm-main/src/main/java/com/jcdm/main/constant/Constants.java
@@ -1,11 +1,16 @@
package com.jcdm.main.constant;
import java.util.ArrayList;
import java.util.List;
public class Constants {
    public static final String IN_BOUND_TIME_CODE = "PAT_INT";
    public static final String OUT_BOUND_TIME_CODE = "PAT_INT";
    public static final String SUCCESS = "success";
    public static final List<String> OP020_OP065 = new ArrayList<>();
    public static final String NG = "2";
    public static final String UN_PASS= "不合格";
    public static final String PASS= "合格";
jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java
@@ -20,6 +20,7 @@
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@@ -65,6 +66,14 @@
    @Override
    public void run(ApplicationArguments args) throws Exception {
        //分段010-065段
        Constants.OP020_OP065.add(Constants.OP020);
        Constants.OP020_OP065.add(Constants.OP030);
        Constants.OP020_OP065.add(Constants.OP040);
        Constants.OP020_OP065.add(Constants.OP050);
        Constants.OP020_OP065.add(Constants.OP060);
        Constants.OP020_OP065.add(Constants.OP065);
        List<SendFactoryMes> sendFactoryMesList = sendFactoryMesService.list();
        OPCUaSubscription opcUaSubscription = new OPCUaSubscription(
                miloService,
@@ -80,7 +89,7 @@
        List<String> lists = getSubList();
        System.out.println("订阅内容:"+lists);
        miloService.subscriptionFromOpcUa(lists,opcUaSubscription);
        miloService.subscriptionFromOpcUa(lists,50,opcUaSubscription);
    }
jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
@@ -52,7 +52,7 @@
    public static MiloService miloService;
    public IDaPassingStationCollectionService daPassingStationCollectionService;
    public static IDaPassingStationCollectionService daPassingStationCollectionService;
    public static IDaCollectionParamConfService collectionParamConfService;
@@ -80,7 +80,7 @@
                             QingYanTestInfoService qingYanTestInfoService,
                             List<SendFactoryMes> sendFactoryMesList) {
        OPCUaSubscription.miloService = miloService;
        this.daPassingStationCollectionService = daPassingStationCollectionService;
        OPCUaSubscription.daPassingStationCollectionService = daPassingStationCollectionService;
        OPCUaSubscription.collectionParamConfService = collectionParamConfService;
        OPCUaSubscription.daParamCollectionService = daParamCollectionService;
        OPCUaSubscription.omProductionOrdeInfoService = omProductionOrdeInfoService;
@@ -103,7 +103,7 @@
                String device = nodes[1];//设备
                String tab = nodes[2];//标记
                String valueString = value.toString();//地址值
                if (Constants.RECORD_CHECK_CODE.equals(tab)){
                if (Constants.RECORD_CHECK_CODE.equals(tab)){//电芯校验
                    if (Constants.ONE.equals(valueString)){
                        Integer scanResult = 11;
                        if (Constants.OP010.equals(device) || Constants.OP030.equals(device)){
@@ -122,8 +122,24 @@
                        miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ScanerResult1").value(scanResult).build());
                        log.info("写入到工位{}的ScanerResult1数据:{}",device,scanResult);
                    }
                }else if (Constants.RECORD_DATA.equals(tab)){
                }else if (Constants.RECORD_SN.equals(tab)){//请求下发模组码9
                    if (Constants.ONE.equals(valueString)){
                        if (Constants.OP070.equals(device)){
                            List<WorkOrder> orderList = workOrderService.list().stream()
                                    .sorted(Comparator.comparing(WorkOrder::getCreateTime).reversed())
                                    .collect(Collectors.toList());
                            if (CollUtil.isNotEmpty(orderList)){
                                String productNum = orderList.get(0).getProductNum();//模组码
                                //OP070下发产品模组码
                                miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ModuleCode").value(productNum).build());
                                miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordSNDone").value(1).build());
                            }else{
                                miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordSNDone").value(2).build());//没有要生产的工单
                            }
                        }
                    }
                }else if (Constants.RECORD_DATA.equals(tab)){//出入站
                    if (Constants.ONE.equals(valueString)){//入站
                        //1:告知MES托盘已到站,请求下发进站状态
                        if (Constants.OP030.equals(device)){
                            //反馈电芯ocv检测结果
@@ -139,18 +155,11 @@
                            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build());
                            log.info("写入到工位{}的RecordDataDone数据:{}",device,11);
                        }
                    }else if (Constants.TWO.equals(valueString)){
                    }else if (Constants.TWO.equals(valueString)){//出站
                        //分段010-065段
                        List<String> PART1 = new ArrayList<>();
                        PART1.add(Constants.OP020);
                        PART1.add(Constants.OP030);
                        PART1.add(Constants.OP040);
                        PART1.add(Constants.OP050);
                        PART1.add(Constants.OP060);
                        PART1.add(Constants.OP065);
                        if (Constants.OP010.equals(device)){
                            //010工位无过站记录,只给放行信号
                            List<SendFactoryMes> collect = sendFactoryMesList.stream().filter(x -> device.equals(x.getLocationCode())).collect(Collectors.toList());
                            /*List<SendFactoryMes> collect = sendFactoryMesList.stream().filter(x -> device.equals(x.getLocationCode())).collect(Collectors.toList());
                            if (CollUtil.isNotEmpty(collect)){
                                for (SendFactoryMes sendFactoryMes : collect) {
                                    ChildVO childVO = new ChildVO();
@@ -158,28 +167,35 @@
                                    childVO.setItemText(sendFactoryMes.getItemText());
                                    childVO.setItemType(sendFactoryMes.getItemType());
                                }
                            }
                            }*/
                            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(21).build());
                            log.info("写入到工位{}的RecordDataDone数据:{}",device,21);
                        }else if (PART1.contains(device)){
                            //020工位保存过站记录+参数数据
                            List<DaPassingStationCollection> passingList = getDaPassingStationCollections(thoroughfare, device);
                            if (CollUtil.isNotEmpty(passingList)){
                                daPassingStationCollectionService.insertBatch(passingList);
                        }else if (Constants.OP020_OP065.contains(device)){
                            Integer result = 21;
                            //读取电芯码
                            List<String> cellCodeList = readCellCodeList(thoroughfare, device);
                            if(ObjectUtil.isNull(cellCodeList) && cellCodeList.size() != 4){
                                result = 23;
                                miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(23).build());
                            }else{
                                result = savePassingStation(thoroughfare, device,cellCodeList);//保存过站
                                if(result==21) {
                                    result = saveParamCollection(thoroughfare, device,cellCodeList);//保存参数,发送工厂MES
                                }
                            }
                            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(21).build());
                            log.info("写入到工位{}的RecordDataDone数据:{}",device,21);
                            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(result).build());
                            log.info("写入到工位{}的RecordDataDone数据:{}",device,result);
                        } else if (Constants.OP100_1.equals(device) || Constants.OP100_2.equals(device)){
                            //下发刻码信息-为模组码
                            ProductOrderQuery query = new ProductOrderQuery();
                            /*ProductOrderQuery query = new ProductOrderQuery();
                            query.setSiteCode("3983");
                            query.setStationCode(device);
                            query.setStationCode(device);*/
                            List<WorkOrder> collect = workOrderService.list().stream()
                                    .sorted(Comparator.comparing(WorkOrder::getCreateTime).reversed())
                                    .collect(Collectors.toList());
                            if (CollUtil.isNotEmpty(collect)){
                            /*if (CollUtil.isNotEmpty(collect)){
                                query.setProductNum(collect.get(0).getProductNum());
                            }
                            }*/
//                            ProductOrderVO vo = daPassingStationCollectionService.queryMessFromLine(query);
                            ProductOrderVO vo = new ProductOrderVO();
                            ProductOrderChild child = new ProductOrderChild();
@@ -289,16 +305,7 @@
                            log.info("写入到工位{}的RecordDataDone数据:{}",device,21);
                        }
                    }
                } else if (Constants.RECORD_SN.equals(tab)){
                    if (Constants.ONE.equals(valueString)){
                        if (Constants.OP070.equals(device)){
                            //OP070下发产品模组码
                            String string = UUID.randomUUID().toString();
                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ModuleCode").value(string).build());
                            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordSNDone").value(1).build());
                        }
                    }
                } else if (Constants.RECORD_CHECK_CODE_1.equals(tab)) {
                }  else if (Constants.RECORD_CHECK_CODE_1.equals(tab)) {
                    if (Constants.OP100_1.equals(device)){
                        //钢带条码校验--发送给工厂mes
                        miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ScanerResult11").value(11).build());
@@ -314,193 +321,320 @@
        }
    }
    /**
     * 保存电芯过站记录
     * 读取电芯码
     * @param thoroughfare 通道
     * @param device 工位
     * @return list
     * @throws Exception e
     */
    private static List<DaPassingStationCollection> getDaPassingStationCollections(String thoroughfare, String device) throws Exception {
    private static List<String> readCellCodeList(String thoroughfare, String device){
        List<String> cellCodeList = new ArrayList<>();
        //电芯码地址
        List<String> readList = new ArrayList<>();
        readList.add(thoroughfare + "." + device +".CellCode_1");
        readList.add(thoroughfare + "." + device +".CellCode_2");
        readList.add(thoroughfare + "." + device +".CellCode_3");
        readList.add(thoroughfare + "." + device +".CellCode_4");
        List<String> keyCodeList = new ArrayList<>();
        List<ReadWriteEntity> readWriteEntityList = miloService.readFromOpcUa(readList);
        List<DaPassingStationCollection> passingList = new ArrayList<>();
        for (ReadWriteEntity readWriteEntity : readWriteEntityList) {
            DaPassingStationCollection passingStationCollection = new DaPassingStationCollection();
            passingStationCollection.setLocationCode(device);
            passingStationCollection.setInboundTime(new Date());
            if (ObjectUtil.isNotNull(readWriteEntity.getValue())){
                passingStationCollection.setKeyCode(readWriteEntity.getValue().toString());
                keyCodeList.add(readWriteEntity.getValue().toString());
        try {
            List<ReadWriteEntity> readWriteEntityList = miloService.readFromOpcUa(readList);//电芯码
            for (ReadWriteEntity readWriteEntity : readWriteEntityList) {
                if (ObjectUtil.isNotNull(readWriteEntity.getValue())){
                    cellCodeList.add(readWriteEntity.getValue().toString());//封装电芯码
                }
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return cellCodeList;
    }
    /**
     * 保存过站数据
     * @param thoroughfare 通道
     * @param device 工位
     * @param cellCodeList 电芯码集合
     * @return list
     * @throws Exception e
     */
    private static Integer savePassingStation(String thoroughfare, String device,List<String> cellCodeList){
        Integer result = 21;
        try {
            //读进站时间
            Date startTime = new Date();
            ReadWriteEntity startTimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StartTime");//进站时间
            if (ObjectUtil.isNotNull(startTimeRead.getValue())){
                String stringStartTime = startTimeRead.getValue().toString();
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
                startTime = sdf.parse(stringStartTime);
            }else{
                result = 23;
                log.info("读取到工位{}的StartTime数据:{},返回RecordDataDone的值为{}",device,"IS NULL!",result);
            }
            //读工站状态
            String stationStatus = Constants.PASS;
            ReadWriteEntity stationStatusRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StationStatus");
            ReadWriteEntity stationStatusRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StationStatus");//站状态地址
            if (ObjectUtil.isNotNull(stationStatusRead.getValue())){
                String string = stationStatusRead.getValue().toString();
                if (Constants.TWO.equals(string)){
                    stationStatus = Constants.UN_PASS;
                }
            }else{
                result = 23;
                log.info("读取到工位{}StationStatuss数据:{},返回RecordDataDone的值为{}",device,"IS NULL!",result);
            }
            passingStationCollection.setOutRsSign(stationStatus);
            passingStationCollection.setCreateTime(new Date());
            passingList.add(passingStationCollection);
            List<DaPassingStationCollection> passingList = new ArrayList<>();
            for (String cellCode : cellCodeList) {
                DaPassingStationCollection passingStationCollection = new DaPassingStationCollection();
                if (ObjectUtil.isNotNull(cellCode)){
                    passingStationCollection.setKeyCode(cellCode);//电芯码
                    passingStationCollection.setLocationCode(device);//工位
                    passingStationCollection.setInboundTime(startTime);//进站时间
                    passingStationCollection.setOutboundTime(new Date());//出站时间
                    passingStationCollection.setOutRsSign(stationStatus);//站状态值
                    passingStationCollection.setCollectionTime(new Date());//采集时间
                    passingList.add(passingStationCollection);
                }else{
                    result = 23;
                    log.info("读取到工位{}CellCode数据:{},返回RecordDataDone的值为{}",device,"IS NULL!",result);
                }
            }
            if (CollUtil.isNotEmpty(passingList)){
                daPassingStationCollectionService.insertBatch(passingList);//存储过站采集数据
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        //参数采集
        //保存参数采集数据
        List<DaCollectionParamConf> list = collectionParamConfService.list(new LambdaQueryWrapper<DaCollectionParamConf>()
                .eq(DaCollectionParamConf::getProcessesCode, device)
                .eq(DaCollectionParamConf::getRemarks, Constants.ONE));
        if (CollUtil.isNotEmpty(list)){
            List<DaParamCollection> saveParamList = new ArrayList<>();
            List<DaCollectionParamConf> confColl1 = list.stream().filter(x -> Constants.INT_ONE.equals(x.getKeyNum())).collect(Collectors.toList());
            List<DaCollectionParamConf> confColl2 = list.stream().filter(x -> Constants.INT_TWO.equals(x.getKeyNum())).collect(Collectors.toList());
            List<DaCollectionParamConf> confColl3 = list.stream().filter(x -> Constants.INT_THREE.equals(x.getKeyNum())).collect(Collectors.toList());
            List<DaCollectionParamConf> confColl4 = list.stream().filter(x -> Constants.INT_FOUR.equals(x.getKeyNum())).collect(Collectors.toList());
            List<DaCollectionParamConf> confColl0 = list.stream().filter(x -> Constants.INT_ZERO.equals(x.getKeyNum())).collect(Collectors.toList());
            List<String> collect1 = confColl1.stream().map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList());
            List<ReadWriteEntity> paramCollectionList1 = miloService.readFromOpcUa(collect1);
            List<String> collect2 = confColl2.stream()
                    .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList());
            List<ReadWriteEntity> paramCollectionList2 = miloService.readFromOpcUa(collect2);
            List<String> collect3 = confColl3.stream()
                    .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList());
            List<ReadWriteEntity> paramCollectionList3 = miloService.readFromOpcUa(collect3);
            List<String> collect4 = confColl4.stream()
                    .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList());
            List<ReadWriteEntity> paramCollectionList4 = miloService.readFromOpcUa(collect4);
            List<String> collect0 = confColl0.stream()
                    .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList());
            List<ReadWriteEntity> paramCollectionList0 = miloService.readFromOpcUa(collect0);
        return result;
    }
            if (CollUtil.isNotEmpty(paramCollectionList1)){
                List<ChildVO> checkList = new ArrayList<>();
                for (int i = 0; i < paramCollectionList1.size(); i++) {
                    DaParamCollection daParamCollection = new DaParamCollection();
                    if (CollUtil.isNotEmpty(keyCodeList) && keyCodeList.size() == 4){
                        daParamCollection.setKeyCode(keyCodeList.get(0));
                    }
    /**
     * 保存电芯过站记录
     * @param thoroughfare 通道
     * @param device 工位
     * @param cellCodeList 电芯码集合
     * @return list
     * @throws Exception e
     */
    private static Integer saveParamCollection(String thoroughfare, String device,List<String> cellCodeList){
        Integer result = 21;//返回结果
        List<List<ChildVO>> mesList = new ArrayList<>();//存储4个电芯的发送给MES的值
                    daParamCollection.setParamCode(paramCollectionList1.get(i).getIdentifier());
                    String paramValue = "";
                    if (ObjectUtil.isNotNull(paramCollectionList1.get(i).getValue())){
                        paramValue = paramCollectionList1.get(i).getValue().toString();
                    }
                    daParamCollection.setParamValue(paramValue);
                    daParamCollection.setLocationCode(device);
                    daParamCollection.setCollectionTime(new Date());
                    saveParamList.add(daParamCollection);
                    ChildVO childVO = new ChildVO();
                    childVO.setItemCode(confColl1.get(i).getCollectParameterName());
                    childVO.setItemType(confColl1.get(i).getItemType());
                    childVO.setItemValue(paramValue);
                    childVO.setItemText(confColl1.get(i).getParameterSetName());
                    childVO.setCheckResult("1");
                    childVO.setCheckTime(new Date().toString());
                    checkList.add(childVO);
                }
                //上传到工厂mes
                ParentVO vo = new ParentVO();
                vo.setStationCode(device);
                vo.setCheckList(checkList);
                vo.setSiteCode("3983");
                vo.setRecordId(UUID.randomUUID().toString());
                vo.setTotalResult("1");
                if (CollUtil.isNotEmpty(keyCodeList) && keyCodeList.size() == 4){
                    vo.setProductNum(keyCodeList.get(0));
                }
                try{
                    CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
                        log.info("开始执行异步方法");
                        HttpResponse execute = HttpRequest.post(orderLineUrl).body(JSONUtil.toJsonStr(vo)).execute();
                        System.out.println(execute.body());
                        log.info("异步方法执行结束");
                    });
                }catch (Exception e){
                    System.out.println(e.getMessage());
                }
            }
            if (CollUtil.isNotEmpty(paramCollectionList2)){
                for (int i = 0; i < paramCollectionList2.size(); i++) {
                    DaParamCollection daParamCollection = new DaParamCollection();
                    if (CollUtil.isNotEmpty(keyCodeList) && keyCodeList.size() == 4){
                        daParamCollection.setKeyCode(keyCodeList.get(1));
                    }
        try {
            //查询参数配置表
            List<DaCollectionParamConf> list = collectionParamConfService.list(new LambdaQueryWrapper<DaCollectionParamConf>()
                    .eq(DaCollectionParamConf::getProcessesCode, device)//工位
                    .eq(DaCollectionParamConf::getRemarks, Constants.ONE));//类型
            if (CollUtil.isNotEmpty(list)) {
                List<DaParamCollection> saveParamList = new ArrayList<>();//封装参数采集list
                List<DaCollectionParamConf> confColl1 = list.stream().filter(x -> Constants.INT_ONE.equals(x.getKeyNum())).collect(Collectors.toList());
                List<DaCollectionParamConf> confColl2 = list.stream().filter(x -> Constants.INT_TWO.equals(x.getKeyNum())).collect(Collectors.toList());
                List<DaCollectionParamConf> confColl3 = list.stream().filter(x -> Constants.INT_THREE.equals(x.getKeyNum())).collect(Collectors.toList());
                List<DaCollectionParamConf> confColl4 = list.stream().filter(x -> Constants.INT_FOUR.equals(x.getKeyNum())).collect(Collectors.toList());
                List<DaCollectionParamConf> confColl0 = list.stream().filter(x -> Constants.INT_ZERO.equals(x.getKeyNum())).collect(Collectors.toList());
                    daParamCollection.setParamCode(paramCollectionList2.get(i).getIdentifier());
                    String paramValue = "";
                    if (ObjectUtil.isNotNull(paramCollectionList2.get(i).getValue())){
                        paramValue = paramCollectionList2.get(i).getValue().toString();
                    }
                    daParamCollection.setParamValue(paramValue);
                    daParamCollection.setLocationCode(device);
                    daParamCollection.setCollectionTime(new Date());
                    saveParamList.add(daParamCollection);
                }
            }
            if (CollUtil.isNotEmpty(paramCollectionList3)){
                for (int i = 0; i < paramCollectionList3.size(); i++) {
                    DaParamCollection daParamCollection = new DaParamCollection();
                    if (CollUtil.isNotEmpty(keyCodeList) && keyCodeList.size() == 4){
                        daParamCollection.setKeyCode(keyCodeList.get(2));
                    }
                List<String> collect1 = confColl1.stream()
                        .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList());
                List<ReadWriteEntity> paramCollectionList1 = miloService.readFromOpcUa(collect1);//电芯1 参数值
                    daParamCollection.setParamCode(paramCollectionList3.get(i).getIdentifier());
                    String paramValue = "";
                    if (ObjectUtil.isNotNull(paramCollectionList3.get(i).getValue())){
                        paramValue = paramCollectionList3.get(i).getValue().toString();
                    }
                    daParamCollection.setParamValue(paramValue);
                    daParamCollection.setLocationCode(device);
                    daParamCollection.setCollectionTime(new Date());
                    saveParamList.add(daParamCollection);
                }
            }
            if (CollUtil.isNotEmpty(paramCollectionList4)){
                for (int i = 0; i < paramCollectionList4.size(); i++) {
                    DaParamCollection daParamCollection = new DaParamCollection();
                    if (CollUtil.isNotEmpty(keyCodeList) && keyCodeList.size() == 4){
                        daParamCollection.setKeyCode(keyCodeList.get(3));
                    }
                List<String> collect2 = confColl2.stream()
                        .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList());
                List<ReadWriteEntity> paramCollectionList2 = miloService.readFromOpcUa(collect2);//电芯2 参数值
                    daParamCollection.setParamCode(paramCollectionList4.get(i).getIdentifier());
                    String paramValue = "";
                    if (ObjectUtil.isNotNull(paramCollectionList4.get(i).getValue())){
                        paramValue = paramCollectionList4.get(i).getValue().toString();
                    }
                    daParamCollection.setParamValue(paramValue);
                    daParamCollection.setLocationCode(device);
                    daParamCollection.setCollectionTime(new Date());
                    saveParamList.add(daParamCollection);
                }
            }
            if (CollUtil.isNotEmpty(paramCollectionList0)){
                for (int i = 0; i < paramCollectionList0.size(); i++) {
                    if (CollUtil.isNotEmpty(keyCodeList) && keyCodeList.size() == 4){
                        for (String s : keyCodeList) {
                            DaParamCollection daParamCollection = new DaParamCollection();
                            daParamCollection.setKeyCode(s);
                            daParamCollection.setParamCode(paramCollectionList0.get(i).getIdentifier());
                            String paramValue = "";
                            if (ObjectUtil.isNotNull(paramCollectionList0.get(i).getValue())){
                                paramValue = paramCollectionList0.get(i).getValue().toString();
                            }
                            daParamCollection.setParamValue(paramValue);
                            daParamCollection.setLocationCode(device);
                            daParamCollection.setCollectionTime(new Date());
                            saveParamList.add(daParamCollection);
                List<String> collect3 = confColl3.stream()
                        .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList());
                List<ReadWriteEntity> paramCollectionList3 = miloService.readFromOpcUa(collect3);//电芯3 参数值
                List<String> collect4 = confColl4.stream()
                        .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList());
                List<ReadWriteEntity> paramCollectionList4 = miloService.readFromOpcUa(collect4);//电芯4 参数值
                List<String> collect0 = confColl0.stream()
                        .map(DaCollectionParamConf::getGatherAddress).collect(Collectors.toList());
                List<ReadWriteEntity> paramCollectionList0 = miloService.readFromOpcUa(collect0);//电芯 参数值
                //第一个电芯的数据
                if (CollUtil.isNotEmpty(paramCollectionList1)) {
                    List<ChildVO> mesChildList1 = new ArrayList<>();//封装给工厂MES发送的childlist1
                    for (int i = 0; i < paramCollectionList1.size(); i++) {
                        DaParamCollection daParamCollection = new DaParamCollection();
                        daParamCollection.setSfcCode(cellCodeList.get(0));//电芯码
                        daParamCollection.setParamCode(confColl1.get(i).getCollectParameterId());//参数编码
                        daParamCollection.setParamName(confColl1.get(i).getCollectParameterName());//参数名称
                        String paramValue = "";
                        if (ObjectUtil.isNotNull(paramCollectionList1.get(i).getValue())) {
                            paramValue = paramCollectionList1.get(i).getValue().toString();//参数值
                        }
                        daParamCollection.setParamValue(paramValue);//参数值
                        daParamCollection.setLocationCode(device);//工位
                        daParamCollection.setCollectionTime(new Date());//采集时间
                        saveParamList.add(daParamCollection);//封装参数采集list
                        //发送给工厂mes参数封装
                        ChildVO childVO = new ChildVO();
                        childVO.setItemCode(confColl1.get(i).getCollectParameterName());//参数
                        childVO.setItemType(confColl1.get(i).getItemType());
                        childVO.setItemValue(paramValue);//参数值
                        childVO.setItemText(confColl1.get(i).getParameterSetName());
                        childVO.setCheckResult("1");
                        childVO.setCheckTime(new Date().toString());
                        mesChildList1.add(childVO);
                        mesList.add(0, mesChildList1);
                    }
                }
                if (CollUtil.isNotEmpty(paramCollectionList2)) {
                    List<ChildVO> mesChildList2 = new ArrayList<>();//封装给工厂MES发送的childlist2
                    for (int i = 0; i < paramCollectionList2.size(); i++) {
                        DaParamCollection daParamCollection = new DaParamCollection();
                        daParamCollection.setSfcCode(cellCodeList.get(1));//电芯码
                        daParamCollection.setParamCode(confColl2.get(i).getCollectParameterId());//参数编码
                        daParamCollection.setParamName(confColl2.get(i).getCollectParameterName());//参数名称
                        String paramValue = "";
                        if (ObjectUtil.isNotNull(paramCollectionList2.get(i).getValue())) {
                            paramValue = paramCollectionList2.get(i).getValue().toString();//参数值
                        }
                        daParamCollection.setParamValue(paramValue);//参数值
                        daParamCollection.setLocationCode(device);//工位
                        daParamCollection.setCollectionTime(new Date());//采集时间
                        saveParamList.add(daParamCollection);//封装参数采集list
                        //发送给工厂mes参数封装
                        ChildVO childVO = new ChildVO();
                        childVO.setItemCode(confColl2.get(i).getCollectParameterName());//参数
                        childVO.setItemType(confColl2.get(i).getItemType());
                        childVO.setItemValue(paramValue);//参数值
                        childVO.setItemText(confColl2.get(i).getParameterSetName());
                        childVO.setCheckResult("1");
                        childVO.setCheckTime(new Date().toString());
                        mesChildList2.add(childVO);
                        mesList.add(1, mesChildList2);
                    }
                }
                if (CollUtil.isNotEmpty(paramCollectionList3)) {
                    List<ChildVO> mesChildList3 = new ArrayList<>();//封装给工厂MES发送的childlist3
                    for (int i = 0; i < paramCollectionList3.size(); i++) {
                        DaParamCollection daParamCollection = new DaParamCollection();
                        daParamCollection.setSfcCode(cellCodeList.get(2));//电芯码
                        daParamCollection.setParamCode(confColl3.get(i).getCollectParameterId());//参数编码
                        daParamCollection.setParamName(confColl3.get(i).getCollectParameterName());//参数名称
                        String paramValue = "";
                        if (ObjectUtil.isNotNull(paramCollectionList3.get(i).getValue())) {
                            paramValue = paramCollectionList3.get(i).getValue().toString();//参数值
                        }
                        daParamCollection.setParamValue(paramValue);//参数值
                        daParamCollection.setLocationCode(device);//工位
                        daParamCollection.setCollectionTime(new Date());//采集时间
                        saveParamList.add(daParamCollection);//封装参数采集list
                        //发送给工厂mes参数封装
                        ChildVO childVO = new ChildVO();
                        childVO.setItemCode(confColl3.get(i).getCollectParameterName());//参数
                        childVO.setItemType(confColl3.get(i).getItemType());
                        childVO.setItemValue(paramValue);//参数值
                        childVO.setItemText(confColl3.get(i).getParameterSetName());
                        childVO.setCheckResult("1");
                        childVO.setCheckTime(new Date().toString());
                        mesChildList3.add(childVO);
                        mesList.add(2, mesChildList3);
                    }
                }
                if (CollUtil.isNotEmpty(paramCollectionList4)) {
                    List<ChildVO> mesChildList4 = new ArrayList<>();//封装给工厂MES发送的childlist4
                    for (int i = 0; i < paramCollectionList4.size(); i++) {
                        DaParamCollection daParamCollection = new DaParamCollection();
                        daParamCollection.setSfcCode(cellCodeList.get(3));//电芯码
                        daParamCollection.setParamCode(confColl4.get(i).getCollectParameterId());//参数编码
                        daParamCollection.setParamName(confColl4.get(i).getCollectParameterName());//参数名称
                        String paramValue = "";
                        if (ObjectUtil.isNotNull(paramCollectionList4.get(i).getValue())) {
                            paramValue = paramCollectionList4.get(i).getValue().toString();//参数值
                        }
                        daParamCollection.setParamValue(paramValue);//参数值
                        daParamCollection.setLocationCode(device);//工位
                        daParamCollection.setCollectionTime(new Date());//采集时间
                        saveParamList.add(daParamCollection);//封装参数采集list
                        //发送给工厂mes参数封装
                        ChildVO childVO = new ChildVO();
                        childVO.setItemCode(confColl4.get(i).getCollectParameterName());//参数
                        childVO.setItemType(confColl4.get(i).getItemType());
                        childVO.setItemValue(paramValue);//参数值
                        childVO.setItemText(confColl4.get(i).getParameterSetName());
                        childVO.setCheckResult("1");
                        childVO.setCheckTime(new Date().toString());
                        mesChildList4.add(childVO);
                        mesList.add(3, mesChildList4);
                    }
                }
                //公共参数
                if (CollUtil.isNotEmpty(paramCollectionList0)) {
                    for (int i = 0; i < cellCodeList.size(); i++) {//循环4个电芯
                        List<ChildVO> mesChildList0 = new ArrayList<>();//封装给工厂MES发送的childlist0
                        for (int j = 0; j < paramCollectionList0.size(); j++) {
                            DaParamCollection daParamCollection = new DaParamCollection();
                            daParamCollection.setSfcCode(cellCodeList.get(i));//电芯码
                            daParamCollection.setParamCode(confColl0.get(j).getCollectParameterId());//参数编码
                            daParamCollection.setParamName(confColl0.get(j).getCollectParameterName());//参数名称
                            String paramValue = "";
                            if (ObjectUtil.isNotNull(paramCollectionList0.get(j).getValue())) {
                                paramValue = paramCollectionList0.get(j).getValue().toString();//参数值
                            }
                            daParamCollection.setParamValue(paramValue);//参数值
                            daParamCollection.setLocationCode(device);//工位
                            daParamCollection.setCollectionTime(new Date());//采集时间
                            saveParamList.add(daParamCollection);
                            //发送给工厂mes参数封装
                            ChildVO childVO = new ChildVO();
                            childVO.setItemCode(confColl0.get(j).getCollectParameterName());//参数
                            childVO.setItemType(confColl0.get(j).getItemType());
                            childVO.setItemValue(paramValue);//参数值
                            childVO.setItemText(confColl0.get(j).getParameterSetName());
                            childVO.setCheckResult("1");
                            childVO.setCheckTime(new Date().toString());
                            mesChildList0.add(childVO);
                        }
                        mesList.get(i).addAll(mesChildList0);
                        /* mesList.add(mesChildList0);*/
                    }
                }
                CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
                    //插入参数采集表
                    daParamCollectionService.insertBatch(saveParamList);
                    //上传到工厂mes
                    ParentVO parentVO = new ParentVO();
                    parentVO.setStationCode(device);//工位
                    parentVO.setSiteCode("3983");
                    parentVO.setRecordId(UUID.randomUUID().toString());
                    parentVO.setTotalResult("1");
                    for (int i = 0; i < cellCodeList.size(); i++) {//循环4个电芯
                        parentVO.setProductNum(cellCodeList.get(i));//电芯码
                        parentVO.setCheckList(mesList.get(i));//参数
                        //CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
                        log.info("执行工厂MES方法start,传入数据:{}",parentVO);
                        HttpResponse execute = HttpRequest.post(orderLineUrl).body(JSONUtil.toJsonStr(parentVO)).execute();
                        log.info("执行工厂MES方法end,返回数据:{}",execute.body());
                        //});
                    }
                });
            }
                daParamCollectionService.insertBatch(saveParamList);
            }
        return passingList;
        }catch (Exception e) {
            throw new RuntimeException(e);
        }
        return result;
    }
    /**