From ba1a7a9ef126296e2798e313dc5b43f775a1123c Mon Sep 17 00:00:00 2001
From: cl <418351270@qq.com>
Date: 星期四, 23 五月 2024 17:44:36 +0800
Subject: [PATCH] 修改数据采集

---
 guns-vip-main/src/main/java/cn/stylefeng/guns/plcserver/callback/OP020Callback.java |  125 +++++++++++++++++++++--------------------
 1 files changed, 65 insertions(+), 60 deletions(-)

diff --git a/guns-vip-main/src/main/java/cn/stylefeng/guns/plcserver/callback/OP020Callback.java b/guns-vip-main/src/main/java/cn/stylefeng/guns/plcserver/callback/OP020Callback.java
index 33f2a70..77431db 100644
--- a/guns-vip-main/src/main/java/cn/stylefeng/guns/plcserver/callback/OP020Callback.java
+++ b/guns-vip-main/src/main/java/cn/stylefeng/guns/plcserver/callback/OP020Callback.java
@@ -1,11 +1,14 @@
 package cn.stylefeng.guns.plcserver.callback;
 
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.stylefeng.guns.modular.bs.collectionParamConf.model.params.CollectionParamConfParam;
 import cn.stylefeng.guns.modular.bs.collectionParamConf.model.result.CollectionParamConfResult;
 import cn.stylefeng.guns.modular.bs.collectionParamConf.service.CollectionParamConfService;
 import cn.stylefeng.guns.modular.bs.equipmentInfo.service.EquipmentInfoService;
 import cn.stylefeng.guns.modular.bs.locationInfo.service.LocationInfoService;
+import cn.stylefeng.guns.modular.cm.paramCollection.entity.ParamCollection;
 import cn.stylefeng.guns.modular.cm.paramCollection.model.params.ParamCollectionParam;
 import cn.stylefeng.guns.modular.cm.paramCollection.service.ParamCollectionService;
 import cn.stylefeng.guns.modular.cm.passingStationCollection.model.params.PassingStationCollectionParam;
@@ -40,9 +43,10 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Component
-public class OP020Callback implements SubscriptionCallback {
+public class OP020Callback{
 
     public MiloService miloService;
 
@@ -93,7 +97,7 @@
     private static String PRODUCTION_LINE  = "OP";//浜х嚎鍙�
     private static String LOCATION_CODE  = "OP020";//宸ヤ綅鍙�
     private static List list = null;
-
+    private static String PRODUCT_STATE = "鍚堟牸";
     public OP020Callback(MiloService miloService,
                          ProductionOrdeInfoService productionOrdeInfoService,
                          PassingStationCollectionService passingStationCollectionService,
@@ -125,42 +129,7 @@
         this.productionOrderRecordsService = productionOrderRecordsService;
         this.productionOrderBatchInfoService = productionOrderBatchInfoService;
     }
-    @Override
-    public void onSubscribe(String identifier, Object value) {
-        String ecpStr = "";//寮傚父璁板綍鏍囪
-        try {
-            //蹇冭烦
-            if(null != value && identifier.equals(OPCElement.OP020_F_HEART_BEAT)){
-                if( "false".equals(value.toString()))
-                {
-                    ReadWriteEntity entity = new ReadWriteEntity(OPCElement.OP020_F_HEART_BEAT,true);
-                    miloService.writeToOpcUa(entity);
-                }
-            }
-            //PLC杩涚珯
-            else if(null != value && identifier.equals(OPCElement.OP020_J_PLC_START)){
-                if("true".equals(value.toString())){
-                    handleOrder();
-                }
-            }
-            //PLC鍑虹珯
-            else if(null != value && identifier.equals(OPCElement.OP020_J_PLC_FINISH)){
-                if("true".equals(value.toString())){
-                    handleFinsh();
-                    handleInfo();
-                    handleMaterial();
-                }
-            }else{
-                System.out.println("鍊兼病鏈夊彉");
-            }
-        } catch (Exception e) {
-            ecpStr ="鍑虹幇寮傚父锛�" + logUtil.getTrace(e);
-        }finally {
-            if(!"".equals(ecpStr)){
-                logger.info(ecpStr+"\r\n");
-            }
-        }
-    }
+
 
     //PC璇诲伐鍗�
     public void handleOrder() throws Exception {
@@ -197,6 +166,11 @@
         String S_PRODUCT_STATE_CODE = miloService.
                 readFromOpcUa(OPCElement.OP020_S_PRODUCT_STATE_CODE)
                 .getValue().toString();
+        if("2".equals(S_PRODUCT_STATE_CODE)){
+            PRODUCT_STATE = "涓嶅悎鏍�";
+        }
+        ReadWriteEntity entity = new ReadWriteEntity(OPCElement.OP020_J_PC_FINISH,true);
+        miloService.writeToOpcUa(entity);//鍐橮C瀹屾垚
 
         if("2".equals(S_PRODUCT_STATE_CODE)){
             ProductionOrderRecordsParam productionOrderRecordsParam = new ProductionOrderRecordsParam();
@@ -206,7 +180,8 @@
             if(!list.isEmpty()){
                 ProductionOrderRecordsResult productionOrderRecordsResult = list.get(0);
                 productionOrderRecordsParam.setId(productionOrderRecordsResult.getId());
-                productionOrderRecordsParam.setWhetherPass(S_PRODUCT_STATE_CODE);
+                productionOrderRecordsParam.setWhetherPass("涓嶅悎鏍�");
+                productionOrderRecordsParam.setEndTime(DateTool.getLocalTimeForDate());
                 productionOrderRecordsService.update(productionOrderRecordsParam);
             }
         }
@@ -222,13 +197,14 @@
         param.setOutRsSign(S_PRODUCT_STATE_CODE);//鍑虹珯鏄惁鍚堟牸
         passingStationCollectionService.add(param);
 
-        ReadWriteEntity entity = new ReadWriteEntity(OPCElement.OP020_J_PC_FINISH,true);
-        miloService.writeToOpcUa(entity);//鍐橮C瀹屾垚
+
         logger.info("handleFinsh PC澶勭悊瀹屾垚锛�");
     }
 
     public void handleMaterial() {
-
+        if(S_ORDER_CODE.isEmpty()){
+            return;
+        }
         //鏌ヨ鎵规涓婃枡淇℃伅
         ProductionOrderBatchInfoParam productionOrderBatchInfoParam = new ProductionOrderBatchInfoParam();
         productionOrderBatchInfoParam.setWorkOrderNo(S_ORDER_CODE);
@@ -269,26 +245,55 @@
             list = collectionParamConfService.findListBySpec(collectionParamConfParam);
         }
         if(null != list && !list.isEmpty()) {
+
+            List<String> nodeIdList = new ArrayList<>();
             for (int i = 0; i < list.size(); i++) {
                 CollectionParamConfResult result = (CollectionParamConfResult) list.get(i);
-                String value = miloService.
-                        readFromOpcUa(result.getGatherAddress())
-                        .getValue().toString();//璇诲弬鏁板��
-                ParamCollectionParam paramCollectionParam = new ParamCollectionParam();
-                paramCollectionParam.setParamCode(result.getParamCode());
-                paramCollectionParam.setParamName(result.getParamName());
-                paramCollectionParam.setWorkOrderNo(S_ORDER_CODE);
-                paramCollectionParam.setSfcCode(S_SFC_CODE);
-                paramCollectionParam.setProductCode(S_PRODUCT_CODE);
-                paramCollectionParam.setProductionLine(result.getProductionLine());
-                paramCollectionParam.setLocationCode(result.getLocationCode());
-                paramCollectionParam.setParamValue(value);
-                paramCollectionParam.setParamLower(result.getParamLower());
-                paramCollectionParam.setParamUpper(result.getParamUpper());
-                paramCollectionParam.setParamStandard(result.getParamCentral());
-                paramCollectionParam.setCollectionTime(DateTool.getLocalTimeForDate());
-                paramCollectionParam.setUnit(result.getUnit());
-                paramCollectionService.add(paramCollectionParam);
+                nodeIdList.add(result.getGatherAddress());
+            }
+
+            List<ReadWriteEntity> readWriteEntityList = new ArrayList<>();
+            if(CollUtil.isNotEmpty(nodeIdList)){
+                readWriteEntityList = miloService.readFromOpcUa(nodeIdList);
+            }
+
+            List<ParamCollection> paramCollectionlist = new ArrayList<>();
+            if (CollUtil.isNotEmpty(nodeIdList)){
+                for(int i=0;i<nodeIdList.size();i++){
+                    if(ObjectUtil.isNotEmpty(readWriteEntityList.get(i).getValue())){
+                        CollectionParamConfResult result = (CollectionParamConfResult) list.get(i);
+                        String value = "0";
+                        if (readWriteEntityList.get(i).getValue() != null){
+                            value = readWriteEntityList.get(i).getValue().toString();
+                        }
+
+                        if(result.getParamName() != null && result.getParamName().contains("鐘舵��")){
+                            if("2".equals(value)){
+                                value = "涓嶅悎鏍�";
+                            }else {
+                                value = "鍚堟牸";
+                            }
+                        }
+
+                        ParamCollection paramCollectionParam = new ParamCollection();
+                        paramCollectionParam.setParamCode(result.getParamCode());
+                        paramCollectionParam.setParamName(result.getParamName());
+                        paramCollectionParam.setWorkOrderNo(S_ORDER_CODE);
+                        paramCollectionParam.setSfcCode(S_SFC_CODE);
+                        paramCollectionParam.setProductCode(S_PRODUCT_CODE);
+                        paramCollectionParam.setProductionLine(result.getProductionLine());
+                        paramCollectionParam.setLocationCode(result.getLocationCode());
+                        paramCollectionParam.setParamValue(value.toString());
+                        paramCollectionParam.setParamLower(result.getParamLower());
+                        paramCollectionParam.setParamUpper(result.getParamUpper());
+                        paramCollectionParam.setParamStandard(result.getParamCentral());
+                        paramCollectionParam.setCollectionTime(DateTool.getLocalTimeForDate());
+                        paramCollectionParam.setUnit(result.getUnit());
+                        paramCollectionParam.setSpareField2(PRODUCT_STATE);
+                        paramCollectionlist.add(paramCollectionParam);
+                    }
+                }
+                paramCollectionService.saveBatch(paramCollectionlist);
             }
         }
 

--
Gitblit v1.9.3