From 696fd55ecc1243bce1d421d95cb9fba4b0a598b1 Mon Sep 17 00:00:00 2001
From: yyt <306727702@qq.com>
Date: 星期三, 22 五月 2024 18:43:41 +0800
Subject: [PATCH] 380新产品,优化

---
 jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java |  352 ++++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 220 insertions(+), 132 deletions(-)

diff --git a/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java b/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
index 75637be..d2a7344 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
@@ -1,6 +1,5 @@
 package com.jcdm.main.plcserver.sub;
 
-
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
@@ -21,8 +20,9 @@
 import com.kangaroohy.milo.model.ReadWriteEntity;
 import com.kangaroohy.milo.runner.subscription.SubscriptionCallback;
 import com.kangaroohy.milo.service.MiloService;
-import javafx.animation.Timeline;
 import lombok.extern.slf4j.Slf4j;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
@@ -37,6 +37,7 @@
 @Component
 public class OPCUaSubscription implements SubscriptionCallback {
 
+    private static final Logger logger = LoggerFactory.getLogger("sys-user");
     public static MiloService miloService;
 
     public IDaCollectionParamConfService collectionParamConfService;
@@ -81,9 +82,6 @@
         String ecpStr = "";//寮傚父璁板綍鏍囪
         try {
             if(null != value && "1".equals(value.toString())) {
-//                if (OPCElement.OP121_ZZ_CODE_CHECK.equals(identifier)){
-//                    rework("2V91Y RD25D080",identifier);
-//                }
                 //1銆佹绱N鍙�
                 //2銆佽繃绔欏弬鏁伴噰闆�
                 //3銆佹壂鐮佹灙鏁版嵁鍥炰紶
@@ -92,26 +90,23 @@
                 List<String> collect2 = lists.stream().filter(x -> OPCElement.SAVE_DATA.equals(x.getrFunction()))
                         .map(DaOpcuaConfig::getNode).collect(Collectors.toList());
                 if (collect1.contains(identifier)){
-                    log.info("-------鐩戝惉鍒�,{}鐨凜ODE_CHECK鐨勪俊鍙�",identifier);
-                    log.info("-------time--------------,{}",LocalDateTime.now());
+                    logger.info("-------鐩戝惉鍒�,{}鐨凜ODE_CHECK鐨勪俊鍙�",identifier);
+                    //logger.info("-------time--------------,{}",LocalDateTime.now());
                     //sn
                     this.SNRetrieval(identifier,value.toString());
                     if (identifier.equals(OPCElement.OP120_ZZ_CODE_CHECK) && "1".equals(value.toString())){
                         //鎬昏涓婄嚎鎵爜浼犺緭鏁版嵁
-                        log.info("-------鐩戝惉鍒�,{}鐨勬壂鐮佹灙鎵爜鐨凜ODE_CHECK鐨勪俊鍙�",identifier);
+                        logger.info("-------鐩戝惉鍒�,{}鐨勬壂鐮佹灙鎵爜鐨凜ODE_CHECK鐨勪俊鍙�",identifier);
                         scannerGunMessage();
                     }
                 }
                 if (collect2.contains(identifier)){
                     if ("1".equals(value.toString())){
-                        log.info("-------鐩戝惉鍒�,{}鐨凷AVE_REQUEST_LAST鐨勪俊鍙�",identifier);
-                        log.info("-------time--------------,{}",LocalDateTime.now());
-                        //save
+                        logger.info("-------鐩戝惉鍒�,{}鐨凷AVE_REQUEST_LAST鐨勪俊鍙�",identifier);
+                        //logger.info("-------time--------------,{}",LocalDateTime.now());
                         this.SaveData(identifier);
-
                     }
                 }
-
             }
         } catch (Exception e) {
             System.out.println(e.getMessage());
@@ -141,14 +136,50 @@
             Object SNCodeObject = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".Code").getValue();
             if(null != SNCodeObject) {
                 String SNCode=SNCodeObject.toString();
-                String a=passingStationCollectionServiceImpl.SelectSN(SNCode,parts[1]);
-                log.info("-----杩斿洖codeCheckFeed-----,{}",a);
+//                String a=passingStationCollectionServiceImpl.SelectSN(SNCode,parts[1]);
+                String a;
+                BsOrderScheduling bsOrderSchedulingQuery = new BsOrderScheduling();
+                bsOrderSchedulingQuery.setEngineNo(SNCode);
+                List<BsOrderScheduling> queryOrderList = bsOrderSchedulingService.selectBsOrderSchedulingList(bsOrderSchedulingQuery);
+                if (CollUtil.isNotEmpty(queryOrderList)){
+                    a = "1";
+                }else {
+                    a = "4";
+                }
+                //濡傛灉鏄繑淇伐浣嶉渶瑕佷紶杈撹繑淇伐浣嶅彿
+                List<DaPassingStationCollection> daPassingStationCollections = new ArrayList<>();
+                List<RmRepairRecord> rmRepairRecords = new ArrayList<>();
+                if (OPCElement.OP465_ZZ_CODE_CHECK.equals(Node) || OPCElement.OP355_ZZ_CODE_CHECK.equals(Node)
+                        || OPCElement.OP695_ZZ_CODE_CHECK.equals(Node) || OPCElement.OP755_ZZ_CODE_CHECK.equals(Node)){
+                    //杩囩珯璁板綍
+                    DaPassingStationCollection PassingStationCollection=new DaPassingStationCollection();
+                    PassingStationCollection.setSfcCode(SNCode);
+                    daPassingStationCollections = passingStationCollectionServiceImpl.selectDaPassingStationCollectionList(PassingStationCollection);
+                    if (CollUtil.isNotEmpty(daPassingStationCollections)){
+                        DaPassingStationCollection lastOne = daPassingStationCollections.get(daPassingStationCollections.size() - 1);
+                        String outRsSign = lastOne.getOutRsSign();
+                        if ("鍚堟牸".equals(outRsSign)){
+                            a = "1";
+                        }else {
+                            a = "2";
+                        }
+                    }
+                    RmRepairRecord rmRepairRecord = new RmRepairRecord();
+                    rmRepairRecord.setBoxCode(SNCode);
+                    rmRepairRecords = rmRepairRecordService.selectRmRepairRecordList(rmRepairRecord);
+                    if (CollUtil.isNotEmpty(rmRepairRecords)){
+                        a = "1";
+                    }
+                }
+                logger.info("-----杩斿洖codeCheckFeed-----,{}",a);
 //                String a="1";
                 // 1:OK鍙敓浜� 2:NG涓嶅彲鐢熶骇 3:NG鍙繑宸� 4:PC妫�绱㈠け璐ワ紙鏃犺褰曪級5:PC妫�绱㈠け璐ワ紙杞欢锛�
                 if (StrUtil.isNotBlank(a)){
                     int input = Integer.parseInt(a);
                     ReadWriteEntity entity = new ReadWriteEntity(parts[0]+"."+parts[1]+".CodeCheckFeed", input);
-                    log.info("-------鐩戝惉鍒�,{}鐨凜odeCheck鐨勪俊鍙�",Node);
+                    logger.info("-------鐩戝惉鍒�,{}鐨凜odeCheck鐨勪俊鍙�",Node);
+                    miloService.writeToOpcByte(entity);
+                    logger.info("鐩戝惉鍒拌繑鍥瀋odecheckfeed淇″彿锛寋}",entity);
                     //棣栫珯浼犺緭璁㈠崟鍙�
                     if (OPCElement.OP050_HX_CODE_CHECK.equals(Node)){
                         //鏌ヨ璁㈠崟鍙�
@@ -160,145 +191,173 @@
                             BsOrderScheduling bsOrderScheduling1 = tempList.get(0);
                             orderNum = bsOrderScheduling1.getOrderNo();
                         }
-
                         ReadWriteEntity entity2 = new ReadWriteEntity(parts[0]+"."+parts[1]+".OrderNumber", orderNum);
                         miloService.writeToOpcUa(entity2);
                     }
                     //濡傛灉鏄繑淇伐浣嶉渶瑕佷紶杈撹繑淇伐浣嶅彿
                     if (OPCElement.OP465_ZZ_CODE_CHECK.equals(Node) || OPCElement.OP355_ZZ_CODE_CHECK.equals(Node)
                     || OPCElement.OP695_ZZ_CODE_CHECK.equals(Node) || OPCElement.OP755_ZZ_CODE_CHECK.equals(Node)){
-                        rework(SNCode,Node);
+                        rework(SNCode,Node,daPassingStationCollections,rmRepairRecords);
+                    }
+                    if (OPCElement.OP020_HX_CODE_CHECK.equals(Node)) {
+                        //婵�鍏夋墦鐮�
+                        String[] printcode=SNCode.split("\\s+");
+                        ReadWriteEntity entity3 = new ReadWriteEntity("CFL4HX.HOP020.PrintCode1", printcode[0]);
+                        OPCUaSubscription.miloService.writeToOpcUa(entity3);//鍐橲N
+                        ReadWriteEntity entity5 = new ReadWriteEntity("CFL4HX.HOP020.PrintCode2", printcode[1]);
+                        OPCUaSubscription.miloService.writeToOpcUa(entity5);//鍐橲N
+                        ReadWriteEntity entity6 = new ReadWriteEntity("CFL4HX.HOP020.SNDoor", "1");
+                        logger.info("鍙戝姩鏈哄彿{}锛岃姹傛墦鐮佸唴瀹瑰啓鍏ユ垚鍔燂紝杩斿洖SNDoor淇″彿淇″彿1",SNCode);
+                        miloService.writeToOpcByte(entity6);
                     }
                     System.out.println(entity);
-                miloService.writeToOpcByte(entity);
+
                 }
 
             }
         }
     }
 
-    private void rework(String SNCode,String Node)  throws Exception{
+    private void rework(String SNCode,String Node,List<DaPassingStationCollection> daPassingStationCollections,List<RmRepairRecord> rmRepairRecords)  throws Exception{
         BsOrderScheduling bsOrderScheduling = new BsOrderScheduling();
         bsOrderScheduling.setEngineNo(SNCode);
         List<String> allProcessCoed = new ArrayList<>();
+        List<BsTechnologyRouteChildInfo> bsTechnologyRouteChildInfos = new ArrayList<>();
         List<String> collect = bsOrderSchedulingService.selectBsOrderSchedulingList(bsOrderScheduling).stream().map(BsOrderScheduling::getModel).collect(Collectors.toList());
         if (CollUtil.isNotEmpty(collect)){
             String s = collect.get(0);
             //鏌ユ壘娆℃満鍨嬬殑瀹屾暣宸ュ簭
-            List<BsTechnologyRouteChildInfo> bsTechnologyRouteChildInfos = bsTechnologyRouteChildInfoService.selectAllTechnologyRouteByProductCode(s);
+            bsTechnologyRouteChildInfos = bsTechnologyRouteChildInfoService.selectAllTechnologyRouteByProductCode(s);
             if (CollUtil.isNotEmpty(bsTechnologyRouteChildInfos)){
                 allProcessCoed = bsTechnologyRouteChildInfos.stream().map(BsTechnologyRouteChildInfo::getProcessesCode).collect(Collectors.toList());
             }
         }
-        RmRepairRecord rmRepairRecord = new RmRepairRecord();
-        rmRepairRecord.setBoxCode(SNCode);
+//        RmRepairRecord rmRepairRecord = new RmRepairRecord();
+//        rmRepairRecord.setBoxCode(SNCode);
         List<ReadWriteEntity> writeList = new ArrayList<>();
-        List<RmRepairRecord> rmRepairRecords = rmRepairRecordService.selectRmRepairRecordList(rmRepairRecord);
+//        List<RmRepairRecord> rmRepairRecords = rmRepairRecordService.selectRmRepairRecordList(rmRepairRecord);
         //杩囩珯璁板綍
-        DaPassingStationCollection PassingStationCollection=new DaPassingStationCollection();
-        PassingStationCollection.setSfcCode(SNCode);
+//        DaPassingStationCollection PassingStationCollection=new DaPassingStationCollection();
+//        PassingStationCollection.setSfcCode(SNCode);
         //杩囩珯璁板綍
-        List<DaPassingStationCollection> daPassingStationCollections = passingStationCollectionServiceImpl.selectDaPassingStationCollectionList(PassingStationCollection);
+//        List<DaPassingStationCollection> daPassingStationCollections = passingStationCollectionServiceImpl.selectDaPassingStationCollectionList(PassingStationCollection);
 
-        //鎵�鏈夊弽宸ュ伐浣�
+        //鎵�鏈夎繑宸ュ伐浣�
         List<String> collect1 = rmRepairRecords.stream().map(RmRepairRecord::getProcessesCode).collect(Collectors.toList());
-        //鏌ヨ鍑烘墍鏈夐渶瑕佽繑淇伐浣嶇殑鏈�灏弌p鍧�
-        Integer minOP = 0;
         if (CollUtil.isNotEmpty(collect1)){
+            //鏌ヨ鍑烘墍鏈夐渶瑕佽繑淇伐浣嶇殑鏈�灏弌p鍧�
+            Integer minOP = 0;
+            if (CollUtil.isNotEmpty(collect1)){
 
-            List<Integer> sortList = new ArrayList<>();
-            collect1.stream().forEach(x ->{
-                String op = x.replace("OP", "");
-                if (StrUtil.isNotBlank(op)){
-                    int i = Integer.parseInt(op);
-                    sortList.add(i);
-                }
-            });
-            if (CollUtil.isNotEmpty(sortList)){
-                List<Integer> collect2 = sortList.stream().sorted().collect(Collectors.toList());
-                minOP = collect2.get(0);
-            }
-        }
-
-        //鎵�鏈夋斁琛屽伐浣�
-        //杩囩珯璁板綍闄ゅ幓杩斾慨璁板綍灏辨槸浼�2锛岃繑淇暟鎹強鍚庨潰鍗犱綅鏁版嵁浼�1
-        List<String> collect3 = daPassingStationCollections.stream().map(DaPassingStationCollection::getLocationCode).collect(Collectors.toList());
-        if (CollUtil.isNotEmpty(collect1)){
-            collect3 = collect3.stream().filter(x -> !collect1.contains(x)).collect(Collectors.toList());
-        }
-        String[] parts = Node.split("[.]");
-        String par = parts[0]+parts[1];
-        if (CollUtil.isNotEmpty(collect3)){
-            collect3.forEach(x -> {
-                ReadWriteEntity readWriteEntity = new ReadWriteEntity();
-                readWriteEntity.setIdentifier(par+"."+x);
-                readWriteEntity.setValue(2);
-                writeList.add(readWriteEntity);
-            });
-        }
-        //闇�鐢熶骇宸ヤ綅
-        List<String> collect4 = allProcessCoed;
-        if (CollUtil.isNotEmpty(collect3)){
-            List<String> finalCollect = collect3;
-            collect4 = allProcessCoed.stream().filter(x -> !finalCollect.contains(x)).collect(Collectors.toList());
-        }
-        if (CollUtil.isNotEmpty(collect4)){
-            //鏁版嵁搴撴煡璇㈠嚭鐨勫伐浣�
-            collect4.forEach(x -> {
-                ReadWriteEntity readWriteEntity = new ReadWriteEntity();
-                readWriteEntity.setIdentifier(par+"."+x);
-                readWriteEntity.setValue(1);
-                writeList.add(readWriteEntity);
-            });
-        }
-//        List<String> collect2 = allProcessCoed;
-//        if (CollUtil.isNotEmpty(rmRepairRecords)){
-//            //鏁版嵁搴撴煡璇㈠嚭鐨勫伐浣�
-//            rmRepairRecords.forEach(x -> {
-//                ReadWriteEntity readWriteEntity = new ReadWriteEntity();
-//                readWriteEntity.setIdentifier(x.getProcessesCode());
-//                readWriteEntity.setValue(1);
-//                writeList.add(readWriteEntity);
-//            });
-//            collect2 = allProcessCoed.stream().filter(x -> !collect1.contains(x)).collect(Collectors.toList());
-//        }
-//        if (CollUtil.isNotEmpty(collect2)){
-//            collect2.forEach(x -> {
-//                ReadWriteEntity readWriteEntity = new ReadWriteEntity();
-//                readWriteEntity.setIdentifier(x);
-//                readWriteEntity.setValue(2);
-//                writeList.add(readWriteEntity);
-//            });
-//        }
-
-        String a=passingStationCollectionServiceImpl.SelectSN(SNCode,parts[1]);
-        if (StrUtil.isNotBlank(a)){
-            int input = Integer.parseInt(a);
-            ReadWriteEntity entity = new ReadWriteEntity(parts[0]+"."+parts[1]+".CodeCheckFeed", input);
-            writeList.add(entity);
-        }
-        ReadWriteEntity readWriteEntity = new ReadWriteEntity();
-        readWriteEntity.setIdentifier("Repair_sign");
-        readWriteEntity.setValue(minOP);
-        writeList.add(readWriteEntity);
-        if (CollUtil.isNotEmpty(writeList)){
-            List<ReadWriteEntity> tempList = new ArrayList<>();
-            for (int i = 0; i < writeList.size(); i++) {
-                tempList.add(writeList.get(i));
-                if (tempList.size()>10){
-                    miloService.writeToOpcByte(tempList);
-                    log.info("鍐欏叆杩斾慨锛�,{}",tempList);
-                    tempList = new ArrayList<>();
+                List<Integer> sortList = new ArrayList<>();
+                collect1.stream().forEach(x ->{
+                    String op = x.replace("OP", "");
+                    if (StrUtil.isNotBlank(op)){
+                        int i = Integer.parseInt(op);
+                        sortList.add(i);
+                    }
+                });
+                if (CollUtil.isNotEmpty(sortList)){
+                    List<Integer> collect2 = sortList.stream().filter(Objects::nonNull).sorted().collect(Collectors.toList());
+                    minOP = collect2.get(0);
                 }
             }
-            if (CollUtil.isNotEmpty(tempList)){
-                miloService.writeToOpcByte(tempList);
-                log.info("鍐欏叆杩斾慨锛�,{}",tempList);
+            //鑾峰彇杩囩珯璁板綍鐨勬渶澶у伐浣�
+            String maxCode = null;
+            if (CollUtil.isNotEmpty(daPassingStationCollections)){
+                List<DaPassingStationCollection> collect2 = daPassingStationCollections.stream().filter(x -> "涓嶅悎鏍�".equals(x.getOutRsSign())).collect(Collectors.toList());
+                if (CollUtil.isNotEmpty(collect2)){
+                    DaPassingStationCollection lastOne = collect2.get(collect2.size() - 1);
+                    maxCode = lastOne.getLocationCode();
+                }else {
+                    DaPassingStationCollection lastOne = daPassingStationCollections.get(daPassingStationCollections.size() - 1);
+                    maxCode = lastOne.getLocationCode();
+                }
+
             }
-
-
+            //鎵�鏈夋斁琛屽伐浣�
+            List<String> passStation = new ArrayList<>();
+            //鎵�鏈夌敓浜у伐浣�
+            List<String> productStation = new ArrayList<>();
+            //鏈�澶у伐浣嶇紪鍙�
+            Integer maxCodeNum = 0;
+            if (StrUtil.isNotEmpty(maxCode)){
+                String finalMaxCode = maxCode;
+                //鑾峰彇褰撳墠宸ヤ綅瀵瑰簲宸ユ鍙�
+                List<String> collect2 = bsTechnologyRouteChildInfos.stream()
+                        .filter(x -> x.getProcessesCode().equals(finalMaxCode))
+                        .map(BsTechnologyRouteChildInfo::getStepNo).collect(Collectors.toList());
+                if (CollUtil.isNotEmpty(collect2)){
+                    String s = collect2.get(0);
+                    if (StrUtil.isNotBlank(s)){
+                        maxCodeNum = Integer.parseInt(s);
+                    }
+                }
+                if (CollUtil.isNotEmpty(bsTechnologyRouteChildInfos)){
+                    bsTechnologyRouteChildInfos.forEach(x -> {
+                        x.setStepNoNum(Integer.parseInt(x.getStepNo()));
+                    });
+                    Integer finalMaxCodeNum = maxCodeNum;
+                    //鍕鹃�夌殑杩斾慨宸ヤ綅涓渶澶х殑宸ヤ綅涔嬪悗鐨勫伐浣�----1
+                    List<BsTechnologyRouteChildInfo> collect3 = bsTechnologyRouteChildInfos.stream()
+                            .filter(x -> x.getStepNoNum() >= finalMaxCodeNum).collect(Collectors.toList());
+                    if (CollUtil.isNotEmpty(collect3)){
+                        //闇�瑕佺敓浜�
+                        productStation.addAll(collect3.stream().map(BsTechnologyRouteChildInfo::getProcessesCode).collect(Collectors.toList()));
+                    }
+                    //浠庣涓�涓伐浣嶅埌杩斾慨鐨勬渶澶у伐浣嶄箣闂达紝
+                    //鍕鹃�変簡杩斾慨鏍囪鐨勯渶瑕佺敓浜�---1锛屾湭鍕鹃�夌殑涓嶇敓浜�---2
+                    productStation.addAll(collect1);
+                }
+            }
+            if (CollUtil.isNotEmpty(productStation)){
+                List<String> collect2 = allProcessCoed.stream().filter(x -> !productStation.contains(x)).collect(Collectors.toList());
+                passStation.addAll(collect2);
+            }
+            String[] parts = Node.split("[.]");
+            String par = parts[0]+"."+parts[1];
+            if (CollUtil.isNotEmpty(passStation)){
+                passStation.forEach(x -> {
+                    ReadWriteEntity readWriteEntity = new ReadWriteEntity();
+                    readWriteEntity.setIdentifier(par+"."+x);
+                    readWriteEntity.setValue(2);
+                    writeList.add(readWriteEntity);
+                });
+            }
+            if (CollUtil.isNotEmpty(productStation)){
+                productStation.forEach(x -> {
+                    ReadWriteEntity readWriteEntity = new ReadWriteEntity();
+                    readWriteEntity.setIdentifier(par+"."+x);
+                    readWriteEntity.setValue(1);
+                    writeList.add(readWriteEntity);
+                });
+            }
+            //瀵筄P755鍋氱壒娈婂鐞�
+            List<ReadWriteEntity> OP755List = new ArrayList<>();
+            if (OPCElement.OP755_ZZ_CODE_CHECK.equals(Node)){
+                List<String> patchList = new ArrayList<>();
+                patchList.add(par+".OP740");
+                patchList.add(par+".OP760");
+                patchList.add(par+".OP770");
+                patchList.add(par+".OP780");
+                for (String s : patchList) {
+                    ReadWriteEntity readWriteEntity = new ReadWriteEntity();
+                    readWriteEntity.setIdentifier(s);
+                    readWriteEntity.setValue(0);
+                    OP755List.add(readWriteEntity);
+                }
+            }
+            ReadWriteEntity readWriteEntity = new ReadWriteEntity();
+            readWriteEntity.setIdentifier(parts[0]+"."+parts[1]+".Repair_sign");
+            readWriteEntity.setValue(minOP);
+            miloService.writeToOpcShort(readWriteEntity);
+            miloService.writeToOpcByte(writeList);
+            logger.info("{}杩斾慨鍐欏叆锛�,{}",SNCode,writeList);
+            if (CollUtil.isNotEmpty(OP755List)){
+                miloService.writeToOpcByte(OP755List);
+            }
         }
-        miloService.writeToOpcByte(writeList);
+
     }
 
 
@@ -335,10 +394,10 @@
 
             List<ReadWriteEntity> readWriteEntityList = new ArrayList<>();
             if(CollUtil.isNotEmpty(nodeIdList)){
-                long time1 = new Date().getTime();
+                //long time1 = new Date().getTime();
                 readWriteEntityList = miloService.readFromOpcUa(nodeIdList);
-                long time2 = new Date().getTime();
-                log.info("璇诲彇鐐逛綅鑺辫垂鏃堕棿锛歿},",time2-time1);
+                //long time2 = new Date().getTime();
+                //logger.info("璇诲彇鐐逛綅鑺辫垂鏃堕棿锛歿},",time2-time1);
             }
                 //杩斿洖plc淇濆瓨鎴愬姛
                 if (parts.length==3){
@@ -349,13 +408,16 @@
                         ReadWriteEntity entity = new ReadWriteEntity(parts[0] + "." + parts[1] + ".SaveFeedLast", 1);
                                 miloService.writeToOpcByte(entity);
                     }
-                    log.info("-------璇锋眰杩斿洖,{}鐨凷aveFeedLast鐨勪俊鍙�",Node);
-                    log.info("-------璇锋眰杩斿洖-----,{}",LocalDateTime.now());
+                    logger.info("{}淇濆瓨璇锋眰淇″彿杩斿洖,MES->PLC鐨凷aveFeedLast淇″彿",Node);
+                    //logger.info("-------璇锋眰杩斿洖-----,{}",LocalDateTime.now());
                 }
+
+                BsOrderScheduling bsOrderScheduling=bsOrderSchedulingService.selectBsOrderSchedulingSNCode(SNCode);
+
                 List<DaParamCollection> daParamCollectionlist = new ArrayList<>();
                 if (CollUtil.isNotEmpty(nodeIdList)){
                     for(int i=0;i<nodeIdList.size();i++){
-                        if(!readWriteEntityList.get(i).getValue().toString().equals("0.0")){
+                        if(ObjectUtil.isNotEmpty(readWriteEntityList.get(i).getValue()) && !readWriteEntityList.get(i).getValue().toString().equals("0.0")){
                             DaParamCollection ParamCollection = new DaParamCollection();
                             ParamCollection.setParamCode(readWriteEntityList.get(i).getIdentifier().toString().split("[.]")[2]);
                             ParamCollection.setLocationCode(parts[1]);
@@ -372,20 +434,28 @@
                             ParamCollection.setState("鍚堟牸");
                             ParamCollection.setType(list.get(i).getCollectParameterType());
                             ParamCollection.setCollectionTime(new Date());
+                            ParamCollection.setWorkOrderNo(bsOrderScheduling.getOrderNo());
                             daParamCollectionlist.add(ParamCollection);
                         }
                     }
                     daParamCollectionService.saveBeachDaParamCollection(daParamCollectionlist);
-                    log.info("-------淇濆瓨鏁版嵁瀹屾垚---------");
+                    logger.info("{}鍙戝姩鏈猴紙{}锛夐噰闆嗘暟鎹繚瀛樺畬鎴�",SNCode,Node);
                 }
-
-
-
-
             Long beatTime = 0L;
             if (ObjectUtil.isNotEmpty(object)){
                 String str = object.toString();
                 beatTime = Float.valueOf(str).longValue();
+            }
+            Object ProductStatus = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".ProductStatus").getValue();
+            logger.info("ProductStatus,{}",ProductStatus.toString());
+            String str1="鍚堟牸" ;
+            if (ObjectUtil.isNotEmpty(ProductStatus)){
+                String productStatusString = ProductStatus.toString();
+                if (productStatusString.contains("2") || productStatusString.contains("3")){
+                    str1="涓嶅悎鏍�";
+                }else {
+                    str1="鍚堟牸";
+                }
             }
             DaPassingStationCollection PassingStationCollection=new DaPassingStationCollection();
             PassingStationCollection.setSfcCode(SNCode);
@@ -395,10 +465,28 @@
             PassingStationCollection.setCollectionTime(new Date());
             PassingStationCollection.setCreateTime(new Date());
             PassingStationCollection.setBeatTime(beatTime.toString());
-            PassingStationCollection.setOutRsSign("鍚堟牸");
+            PassingStationCollection.setOutRsSign(str1);
+            PassingStationCollection.setWorkOrderNo(bsOrderScheduling.getOrderNo());
             passingStationCollectionServiceImpl.insertDaPassingStationCollection(PassingStationCollection);
-            log.info("-------淇濆瓨杩囩珯璁板綍鏁版嵁瀹屾垚---------");
+            logger.info("{}鍙戝姩鏈猴紙{}锛夎繃绔欐暟鎹繚瀛樺畬鎴�",SNCode,Node);
 
+            //鏇存柊宸ュ崟鐘舵��
+            if ("OP790".equals(parts[1])) {
+                //bsOrderScheduling.setReport20("0");
+                bsOrderScheduling.setProductionStatus("3");
+                bsOrderScheduling.setFinalAssemblyOfflineTime(new Date());
+            }else if("OP050".equals(parts[1])){
+                bsOrderScheduling.setReport10("0");
+                bsOrderScheduling.setProductionStatus("2");
+                bsOrderScheduling.setBoxClosingOnlineTime(new Date());
+            }else if("OP120".equals(parts[1])){
+                bsOrderScheduling.setReport20("0");
+                bsOrderScheduling.setFinalAssemblyLaunchTime(new Date());
+                bsOrderScheduling.setClosingBoxOfflineTime(new Date());
+            }
+            bsOrderScheduling.setQualityStatus(str1);
+            bsOrderScheduling.setCurrentWorkstation(parts[1]);
+            bsOrderSchedulingService.updateBsOrderScheduling(bsOrderScheduling);
         }
     }
 }

--
Gitblit v1.9.3