From cf6bff3922bbd0624b98834f6ea85c8e619e564f Mon Sep 17 00:00:00 2001 From: cl <418351270@qq.com> Date: 星期二, 16 一月 2024 12:45:46 +0800 Subject: [PATCH] 修改数据采集 --- guns-vip-main/src/main/java/cn/stylefeng/guns/plcserver/server/OP010/impl/OP010ServerInterfaceImpl.java | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 116 insertions(+), 2 deletions(-) diff --git a/guns-vip-main/src/main/java/cn/stylefeng/guns/plcserver/server/OP010/impl/OP010ServerInterfaceImpl.java b/guns-vip-main/src/main/java/cn/stylefeng/guns/plcserver/server/OP010/impl/OP010ServerInterfaceImpl.java index 8588d57..7cbc39a 100644 --- a/guns-vip-main/src/main/java/cn/stylefeng/guns/plcserver/server/OP010/impl/OP010ServerInterfaceImpl.java +++ b/guns-vip-main/src/main/java/cn/stylefeng/guns/plcserver/server/OP010/impl/OP010ServerInterfaceImpl.java @@ -7,10 +7,18 @@ import cn.stylefeng.guns.modular.bs.locationInfo.service.LocationInfoService; import cn.stylefeng.guns.modular.cm.passingStationCollection.model.params.PassingStationCollectionParam; import cn.stylefeng.guns.modular.cm.passingStationCollection.service.PassingStationCollectionService; +import cn.stylefeng.guns.modular.dq.materialTraceability.model.params.MaterialTraceabilityParam; +import cn.stylefeng.guns.modular.dq.materialTraceability.service.MaterialTraceabilityService; import cn.stylefeng.guns.modular.om.productionOrdeInfo.entity.ProductionOrdeInfo; import cn.stylefeng.guns.modular.om.productionOrdeInfo.model.params.ProductionOrdeInfoParam; import cn.stylefeng.guns.modular.om.productionOrdeInfo.model.result.ProductionOrdeInfoResult; import cn.stylefeng.guns.modular.om.productionOrdeInfo.service.ProductionOrdeInfoService; +import cn.stylefeng.guns.modular.om.productionOrderBatchInfo.model.params.ProductionOrderBatchInfoParam; +import cn.stylefeng.guns.modular.om.productionOrderBatchInfo.model.result.ProductionOrderBatchInfoResult; +import cn.stylefeng.guns.modular.om.productionOrderBatchInfo.service.ProductionOrderBatchInfoService; +import cn.stylefeng.guns.modular.om.productionOrderRecords.model.params.ProductionOrderRecordsParam; +import cn.stylefeng.guns.modular.om.productionOrderRecords.model.result.ProductionOrderRecordsResult; +import cn.stylefeng.guns.modular.om.productionOrderRecords.service.ProductionOrderRecordsService; import cn.stylefeng.guns.modular.sc.repairManageInfo.model.params.RepairManageInfoParam; import cn.stylefeng.guns.modular.sc.repairManageInfo.model.result.RepairManageInfoResult; import cn.stylefeng.guns.modular.sc.repairManageInfo.service.RepairManageInfoService; @@ -57,13 +65,32 @@ private static Integer ACTUAL_ONLINE_QTY = 0 ;//涓婄嚎鏁伴噺 + private int count = 0; - + /** + * 璁剧疆蹇冭烦鏍囧織浣嶏紝淇濆瓨鍒板叏灞�鍙橀噺 + */ + public void setHeartbeat(String value) { + if ("false".equals(value)) { + OPCUnit.write(opc.getOP010_F_HEART_BEAT(), "true"); + GlobalVariable.OP010_F_HEART_BEAT = true; + count = 0; + } else { + count++; + } + // 寰幆璇诲彇棰戠巼鏄細500ms涓�娆★紝濡傛灉瓒呰繃6娆★紝涔熷氨鏄�3s璁ゅ畾瓒呮椂 + if (count > GlobalVariable.HEART_MAX_COUNT) { + GlobalVariable.OP010_F_HEART_BEAT = false; + } + } @Override public synchronized void monitor() { String ecpStr = "";//寮傚父璁板綍鏍囪 try{ + + String isHeartBeat = OPCUnit.read(opc.getOP010_F_HEART_BEAT()); + setHeartbeat(isHeartBeat); if(GlobalVariable.OP010_F_HEART_BEAT) { @@ -89,6 +116,7 @@ if(isPLCFinish.equals("true")){ String isFinish = OPCUnit.read(opc.getOP010_J_PC_FINISH());//PC鎿嶄綔瀹屾垚 if(isFinish.equals("false")){ + handleMaterial(); handleFinsh(); } } @@ -156,6 +184,7 @@ } //PC涓嬪彂宸ュ崟 public void handleOrder() { + logger.info("OP010宸ヤ綅,handleOrder PC澶勭悊寮�濮嬶紒"); IN_TIME = DateTool.getLocalTimeForDate(); ProductionOrdeInfoParam param = new ProductionOrdeInfoParam(); @@ -216,6 +245,18 @@ S_PRODUCT_TYPE = GlobalVariable.PRODUCT_TYPE_MAP.get(S_PRODUCT_CODE); ACTUAL_ONLINE_QTY = result.getActualOnlineQty(); + + //鏂板鎶ュ伐璁板綍 + ProductionOrderRecordsParam productionOrderRecordsParam = new ProductionOrderRecordsParam(); + productionOrderRecordsParam.setWorkOrderNo(S_ORDER_CODE); + productionOrderRecordsParam.setProductNo(S_SFC_CODE); + productionOrderRecordsParam.setMaterialCode(S_PRODUCT_CODE); + productionOrderRecordsParam.setStartTime(DateTool.getLocalTimeForDate()); + productionOrderRecordsParam.setWhetherPass("true"); + ProductionOrderRecordsService productionOrderRecordsService = opc.productionOrderRecordsService; + productionOrderRecordsService.add(productionOrderRecordsParam); + + OPCUnit.write(opc.getOP010_S_ORDER_CODE(),S_ORDER_CODE); //宸ュ崟缂栧彿 OPCUnit.write(opc.getOP010_S_PRODUCT_CODE(), S_PRODUCT_TYPE); //浜у搧缂栧彿 OPCUnit.write(opc.getOP010_S_SFC_CODE(), S_SFC_CODE); //鎬绘垚缂栫爜 @@ -229,6 +270,61 @@ } + public void handleMaterial() { + if("".equals(S_ORDER_CODE)){ + IN_TIME = DateTool.getLocalTimeForDate(); + S_ORDER_CODE = OPCUnit.read(opc.getOP010_S_ORDER_CODE());//宸ュ崟缂栧彿 + S_PRODUCT_TYPE = OPCUnit.read(opc.getOP010_S_PRODUCT_CODE());//浜у搧缂栧彿 + S_PRODUCT_CODE = GlobalVariable.PRODUCT_CODE_MAP.get(S_PRODUCT_TYPE); + S_SFC_CODE = OPCUnit.read(opc.getOP010_S_SFC_CODE());//鎬绘垚缂栫爜 + } + //鏌ヨ鎵规涓婃枡淇℃伅 + ProductionOrderBatchInfoParam productionOrderBatchInfoParam = new ProductionOrderBatchInfoParam(); + productionOrderBatchInfoParam.setWorkOrderNo(S_ORDER_CODE); + productionOrderBatchInfoParam.setLocationCode(LOCATION_CODE); + ProductionOrderBatchInfoService productionOrderBatchInfoService = opc.productionOrderBatchInfoService; + List<ProductionOrderBatchInfoResult> list1 = productionOrderBatchInfoService.findListBySpec(productionOrderBatchInfoParam); + for(int i=0;i<list1.size();i++){ + ProductionOrderBatchInfoResult productionOrderBatchInfoResult = list1.get(i); + + //鍒ゆ柇鏄惁鏈夎宸ヤ綅 + String[] locationCodes = productionOrderBatchInfoResult.getLocationCode().split("/"); + logger.info("褰撳墠宸ヤ綅锛�"+locationCodes.toString()); + boolean isLocationCode = false; + if(locationCodes.length>0) + { + for (int j=0;j<locationCodes.length;j++){ + String location = locationCodes[j]; + if(location.equals(LOCATION_CODE)){ + isLocationCode = true; + } + } + } + + int remainingQuantity = productionOrderBatchInfoResult.getResidueQuantity();//鍓╀綑鏁伴噺 + if(remainingQuantity>0 && isLocationCode){ + //鏂板鐗╂枡杩芥函 + MaterialTraceabilityParam materialTraceabilityParam = new MaterialTraceabilityParam(); + materialTraceabilityParam.setWorkOrderNo(S_ORDER_CODE); + materialTraceabilityParam.setProductCode(S_PRODUCT_CODE); + materialTraceabilityParam.setProductNo(S_SFC_CODE); + materialTraceabilityParam.setLineCode(PRODUCTION_LINE); + materialTraceabilityParam.setLocationCode(LOCATION_CODE); + materialTraceabilityParam.setAssemblyQty(1); + materialTraceabilityParam.setAssemblyTime(DateTool.getLocalTimeForDate()); + materialTraceabilityParam.setMaterialCode(productionOrderBatchInfoResult.getMaterialCode());//鐗╂枡缂栫爜 + materialTraceabilityParam.setMaterialBatchNo(productionOrderBatchInfoResult.getBatch());//鐗╂枡鎵规 + + MaterialTraceabilityService materialTraceabilityService = opc.materialTraceabilityService; + materialTraceabilityService.add(materialTraceabilityParam); + //鏇存柊鍓╀綑鏁伴噺 + productionOrderBatchInfoParam.setId(productionOrderBatchInfoResult.getId()); + productionOrderBatchInfoParam.setResidueQuantity(remainingQuantity-1);//鍓╀綑鏁伴噺 + productionOrderBatchInfoService.update(productionOrderBatchInfoParam); + } + } + } + //PC瀹屾垚 public void handleFinsh() { logger.info("OP010宸ヤ綅,handleFinsh PC澶勭悊寮�濮嬶紒"); @@ -239,8 +335,26 @@ S_PRODUCT_CODE = GlobalVariable.PRODUCT_CODE_MAP.get(S_PRODUCT_TYPE); S_SFC_CODE = OPCUnit.read(opc.getOP010_S_SFC_CODE());//鎬绘垚缂栫爜 } - //澶勭悊杩囩珯淇℃伅 + String S_PRODUCT_STATE_CODE = OPCUnit.read(opc.getOP010_S_PRODUCT_STATE_CODE()); + + //淇敼鎶ュ伐璁板綍 + if("false".equals(S_PRODUCT_STATE_CODE)){ + ProductionOrderRecordsParam productionOrderRecordsParam = new ProductionOrderRecordsParam(); + productionOrderRecordsParam.setWorkOrderNo(S_ORDER_CODE); + productionOrderRecordsParam.setProductNo(S_SFC_CODE); + ProductionOrderRecordsService productionOrderRecordsService = opc.productionOrderRecordsService; + + List<ProductionOrderRecordsResult> list = productionOrderRecordsService.findListBySpec(productionOrderRecordsParam); + if(list.size()>0){ + ProductionOrderRecordsResult productionOrderRecordsResult = list.get(0); + productionOrderRecordsParam.setId(productionOrderRecordsResult.getId()); + productionOrderRecordsParam.setWhetherPass(S_PRODUCT_STATE_CODE); + productionOrderRecordsService.update(productionOrderRecordsParam); + } + } + + //澶勭悊杩囩珯淇℃伅 PassingStationCollectionParam param = new PassingStationCollectionParam(); param.setWorkOrderNo(S_ORDER_CODE); param.setProductCode(S_PRODUCT_CODE); -- Gitblit v1.9.3