From ebb5bfe01a1ceb66c7ec286a2a1cc589faab58d5 Mon Sep 17 00:00:00 2001 From: "USER-20220102CG\\noblelift" <546428999@qq.com> Date: Tue, 16 Aug 2022 19:48:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/nl/acs/device/wql/device.xls | Bin 259072 -> 236032 bytes .../LnshLaminatingMachineDeviceDriver.java | 71 +++++++++++++++++- ...hPackagePalletManipulatorDeviceDriver.java | 12 ++- ...agePalletSplitManipulatorDeviceDriver.java | 39 ++++++---- .../wms/service/impl/WmsToAcsServiceImpl.java | 19 ++++- 5 files changed, 116 insertions(+), 25 deletions(-) diff --git a/acs/hd/nladmin-system/src/main/java/org/nl/acs/device/wql/device.xls b/acs/hd/nladmin-system/src/main/java/org/nl/acs/device/wql/device.xls index fdaae6e5840086e16a55b97889690131d4f5d1e9..9fded1e6b8cf137f17a1b2e5b4cf06b3b048facd 100644 GIT binary patch delta 44920 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 L1Fi8LU-JI|iJo&? delta 65039 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 Re}#Ct2khMT+{tFn{0qU#OJ4v0 diff --git a/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_Laminating_machine/LnshLaminatingMachineDeviceDriver.java b/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_Laminating_machine/LnshLaminatingMachineDeviceDriver.java index fc916c1..30fb0a8 100644 --- a/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_Laminating_machine/LnshLaminatingMachineDeviceDriver.java +++ b/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_Laminating_machine/LnshLaminatingMachineDeviceDriver.java @@ -1,6 +1,8 @@ package org.nl.acs.device_driver.lnsh.lnsh_Laminating_machine; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import lombok.Data; import lombok.RequiredArgsConstructor; @@ -176,8 +178,15 @@ public class LnshLaminatingMachineDeviceDriver extends AbstractOpcDeviceDriver i case 2: break; case 4: - if (!requireSucess) { - getVehicle_code(); + //申请入窑 + if(move ==1 && !requireSucess && StrUtil.isNotEmpty(this.barcode)){ + applyIn(); + } + break; + case 5: + //申请出窑 + if (!requireSucess && this.move != 0 && StrUtil.isNotEmpty(this.barcode)) { + outKiln(); } break; } @@ -212,6 +221,64 @@ public class LnshLaminatingMachineDeviceDriver extends AbstractOpcDeviceDriver i } } + /** + * 申请入窑 + * + * @param + */ + public synchronized boolean applyIn() { + Date date = new Date(); + if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + return false; + } else { + this.instruction_require_time = date; + JSONObject json = new JSONObject(); + json.put("device_code",this.device_code); + json.put("type","5"); + json.put("vehicle_code",barcode); + HttpResponse result = acsToWmsService.inKiln(json); + if (ObjectUtil.isNotEmpty(result)) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (result.getStatus() == 200 && StrUtil.equals(jsonObject.get("status").toString(),"200")) { + this.writing(1); + this.setRequireSucess(true); + } + } + return true; + } + } + + /** + * 申请出窑 + * + * @param + */ + public synchronized boolean outKiln() { + Date date = new Date(); + if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + return false; + } else { + this.instruction_require_time = date; + JSONObject json = new JSONObject(); + json.put("device_code",this.device_code); + json.put("vehicle_code",barcode); + HttpResponse result = acsToWmsService.outKiln(json); + if (ObjectUtil.isNotEmpty(result)) { + JSONObject jsonObject = JSONObject.parseObject(result.body()); + if (result.getStatus() == 200 && StrUtil.equals(jsonObject.get("status").toString(),"200")) { + String code = jsonObject.getString("code"); + this.writing(1); + this.writing(2,Integer.parseInt(code)); + this.setRequireSucess(true); + } + } + return true; + } + } + + public boolean exe_business() { return true; } diff --git a/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/LnshPackagePalletManipulatorDeviceDriver.java b/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/LnshPackagePalletManipulatorDeviceDriver.java index 3f0fd48..ea15531 100644 --- a/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/LnshPackagePalletManipulatorDeviceDriver.java +++ b/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/LnshPackagePalletManipulatorDeviceDriver.java @@ -1067,8 +1067,8 @@ public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceD if (result.getStatus() == 200 && StrUtil.equals(jsonObject.getString("status"),"200")) { this.writing(this.mode); } + this.setRequireSucess(true); } - this.setRequireSucess(true); return true; } } @@ -1086,8 +1086,12 @@ public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceD } else { this.instruction_require_time = date; JSONObject json = new JSONObject(); - json.put("device_code",this.device_code); - json.put("qty",qty); + this.instruction_require_time = date; + String linkobj = (String)this.getDevice().getExtraValue().get("link_device_code"); + String demosub = linkobj.substring(1,linkobj.length()-1); + String demoArray[] = demosub.split(","); + List demoList = Arrays.asList(demoArray); + json.put("device_code",demoList.get(put_station-1).replace("\"","")); json.put("qty",qty); json.put("vehicle_code",barcode); json.put("is_full","0"); json.put("product_code",product_code); @@ -1155,8 +1159,8 @@ public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceD if (result.getStatus() == 200 && StrUtil.equals(jsonObject.getString("status"),"200")) { this.writing(this.mode); } + this.setRequireSucess(true); } - this.setRequireSucess(true); return true; } } diff --git a/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/rljn_package_palletSplit_manipulator/RljnPackagePalletSplitManipulatorDeviceDriver.java b/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/rljn_package_palletSplit_manipulator/RljnPackagePalletSplitManipulatorDeviceDriver.java index 75adc0a..c64fda9 100644 --- a/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/rljn_package_palletSplit_manipulator/RljnPackagePalletSplitManipulatorDeviceDriver.java +++ b/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/rljn_package_palletSplit_manipulator/RljnPackagePalletSplitManipulatorDeviceDriver.java @@ -27,10 +27,7 @@ import org.openscada.opc.lib.da.Server; import org.springframework.beans.factory.annotation.Autowired; import java.lang.reflect.Field; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 荣力嘉耐-包装码拆垛机械手 @@ -706,6 +703,7 @@ public class RljnPackagePalletSplitManipulatorDeviceDriver extends AbstractOpcDe if (!requireSucess) { applyEmpty(); } + break; case 9: //工单完成 if (!requireSucess && !order_No.equals("0")) { @@ -837,18 +835,18 @@ public class RljnPackagePalletSplitManipulatorDeviceDriver extends AbstractOpcDe if (ObjectUtil.isNotEmpty(result)) { JSONObject jsonObject = JSONObject.parseObject(result.body()); if (result.getStatus() == 200 && StrUtil.equals(jsonObject.getString("status"),"200")) { - this.writing(this.mode); ProduceshiftorderDto dto = produceshiftorderService.findByCode(order_No); if (this.mode == 4) { - dto.setOrder_status("0"); + dto.setOrder_status("1"); } else if (this.mode == 9){ dto.setOrder_status("2"); } produceshiftorderService.update(dto); + this.writing(this.mode); + this.setRequireSucess(true); } } - this.setRequireSucess(true); return true; } } @@ -1015,8 +1013,12 @@ public class RljnPackagePalletSplitManipulatorDeviceDriver extends AbstractOpcDe } else { this.instruction_require_time = date; JSONObject json = new JSONObject(); - json.put("device_code",this.device_code); - json.put("qty",qty); + this.instruction_require_time = date; + String linkobj = (String)this.getDevice().getExtraValue().get("link_device_code"); + String demosub = linkobj.substring(1,linkobj.length()-1); + String demoArray[] = demosub.split(","); + List demoList = Arrays.asList(demoArray); + json.put("device_code",demoList.get(put_station-1).replace("\"","")); json.put("qty",qty); json.put("vehicle_code",barcode); json.put("is_full","1"); json.put("product_code",product_code); @@ -1103,8 +1105,11 @@ public class RljnPackagePalletSplitManipulatorDeviceDriver extends AbstractOpcDe } else { this.instruction_require_time = date; JSONObject json = new JSONObject(); - json.put("device_code",this.device_code); - json.put("qty",qty); + String linkobj = (String)this.getDevice().getExtraValue().get("link_device_code"); + String demosub = linkobj.substring(1,linkobj.length()-1); + String demoArray[] = demosub.split(","); + List demoList = Arrays.asList(demoArray); + json.put("device_code",demoList.get(put_station-1).replace("\"","")); json.put("qty",qty); json.put("vehicle_code",barcode); json.put("is_full","0"); json.put("product_code",product_code); @@ -1172,8 +1177,8 @@ public class RljnPackagePalletSplitManipulatorDeviceDriver extends AbstractOpcDe if (result.getStatus() == 200 && StrUtil.equals(jsonObject.getString("status"),"200")) { this.writing(this.mode); } + this.setRequireSucess(true); } - this.setRequireSucess(true); return true; } } @@ -1191,18 +1196,20 @@ public class RljnPackagePalletSplitManipulatorDeviceDriver extends AbstractOpcDe } else { this.instruction_require_time = date; JSONObject json = new JSONObject(); - json.put("device_code",this.device_code); + String linkobj = (String)this.getDevice().getExtraValue().get("link_device_code"); + String demosub = linkobj.substring(1,linkobj.length()-1); + String demoArray[] = demosub.split(","); + List demoList = Arrays.asList(demoArray); + json.put("device_code",demoList.get(put_station-1).replace("\"","")); json.put("type","4"); - json.put("qty",qty); - json.put("vehicle_code",barcode); HttpResponse result = acsToWmsService.lnshApplyTaskToWms(json); if (ObjectUtil.isNotEmpty(result)) { JSONObject jsonObject = JSONObject.parseObject(result.body()); if (result.getStatus() == 200 && StrUtil.equals(jsonObject.getString("status"),"200")) { this.writing(this.mode); + this.setRequireSucess(true); } } - this.setRequireSucess(true); return true; } } diff --git a/acs/hd/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/acs/hd/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java index 6e0cd2e..c485b58 100644 --- a/acs/hd/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java +++ b/acs/hd/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java @@ -286,6 +286,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { LnshPackagePalletManipulatorDeviceDriver lnshPackagePalletManipulatorDeviceDriver; LnshPalletizingManipulatorDeviceDriver lnshPalletizingManipulatorDeviceDriver; + RljnPackagePalletSplitManipulatorDeviceDriver rljnPackagePalletSplitManipulatorDeviceDriver; if (device.getDeviceDriver() instanceof LnshPalletizingManipulatorDeviceDriver) { lnshPalletizingManipulatorDeviceDriver = (LnshPalletizingManipulatorDeviceDriver) device.getDeviceDriver(); if (StrUtil.isEmpty(qty)) { @@ -312,8 +313,21 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { lnshPackagePalletManipulatorDeviceDriver.writing("to_material_code", material_code); is_flag = true; } - //下发成功后,写入工单信息表记录 - if (is_flag) { + + if (device.getDeviceDriver() instanceof RljnPackagePalletSplitManipulatorDeviceDriver) { + rljnPackagePalletSplitManipulatorDeviceDriver = (RljnPackagePalletSplitManipulatorDeviceDriver) device.getDeviceDriver(); + if (StrUtil.isEmpty(qty)) { + throw new WDKException("数量不能为空"); + } + if (StrUtil.isEmpty(material_code)) { + throw new WDKException("物料编号不能为空!"); + } + rljnPackagePalletSplitManipulatorDeviceDriver.writing("to_order_No", producetask_code); + rljnPackagePalletSplitManipulatorDeviceDriver.writing("to_material_qty", qty); + rljnPackagePalletSplitManipulatorDeviceDriver.writing("to_material_code", material_code); + is_flag = true; + } + //下发成功后,写入工单信息表记录 ProduceshiftorderDto dto = new ProduceshiftorderDto(); dto.setOrder_code(producetask_code); dto.setProduct_code(product_code); @@ -328,7 +342,6 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { dto.setWeight(weight); dto.setQty(qty); produceshiftorderService.create(dto); - } } JSONObject resultJson = new JSONObject();