From d04ce586afce3b78f238289dad10dacd4c22206a Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期五, 08 十二月 2023 08:30:31 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/SiemensCrnThread.java | 312 +++++++++++++++------------------------------------- 1 files changed, 90 insertions(+), 222 deletions(-) diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java index ac4f614..5f8e0cd 100644 --- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java +++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java @@ -5,11 +5,15 @@ import HslCommunication.Profinet.Siemens.SiemensPLCS; import HslCommunication.Profinet.Siemens.SiemensS7Net; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.common.SpringUtils; import com.zy.asrs.entity.*; +import com.zy.asrs.entity.param.TaskOverToWms; import com.zy.asrs.service.*; +import com.zy.common.utils.HttpHandler; import com.zy.core.CrnThread; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; @@ -21,12 +25,11 @@ import com.zy.core.model.protocol.CrnProtocol; import lombok.Data; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Optional; +import java.util.*; /** * 鍫嗗灈鏈虹嚎绋� @@ -40,6 +43,8 @@ private CrnSlave slave; private CrnProtocol crnProtocol; private boolean resetFlag = false; + @Value("${wms.url}") + private String wmsUrl; public static final List<Short> rowOne = new ArrayList<Short>() {{ add((short) 1);add((short) 5);add((short) 7);add((short) 11);add((short) 15);add((short) 19); }}; @@ -181,181 +186,93 @@ crnProtocol.setXDuration(siemensNet.getByteTransform().TransSingle(result.Content, 48)); crnProtocol.setYDuration(siemensNet.getByteTransform().TransSingle(result.Content, 52)); -// // 寮傚父 -// crnProtocol.setAlarm1(0); -// crnProtocol.setAlarm2(0); -// crnProtocol.setAlarm3(0); -// crnProtocol.setAlarm4(0); -// boolean[] err1 = siemensNet.getByteTransform().TransBool(result.Content, 28, 1); // 30 -// if (err1[0]) { crnProtocol.setAlarm1(1); } -// if (err1[1]) { crnProtocol.setAlarm1(2); } -// if (err1[2]) { crnProtocol.setAlarm1(3); } -// boolean[] err2 = siemensNet.getByteTransform().TransBool(result.Content, 29, 1); // 31 -// if (err2[0]) { crnProtocol.setAlarm1(4); } -// if (err2[1]) { crnProtocol.setAlarm1(5); } -// if (err2[2]) { crnProtocol.setAlarm1(6); } -// boolean[] err3 = siemensNet.getByteTransform().TransBool(result.Content, 30, 1); // 32 -// if (err3[6]) { crnProtocol.setAlarm1(7); } -// if (err3[7]) { crnProtocol.setAlarm1(8); } -// boolean[] err4 = siemensNet.getByteTransform().TransBool(result.Content, 31, 1); // 33 -// if (err4[1]) { crnProtocol.setAlarm1(9); } -// if (err4[5]) { crnProtocol.setAlarm1(10); } -// if (err4[6]) { crnProtocol.setAlarm1(11); } -// if (err4[7]) { crnProtocol.setAlarm1(12); } -// boolean[] err5 = siemensNet.getByteTransform().TransBool(result.Content, 32, 1); // 34 -// if (err5[0]) { crnProtocol.setAlarm2(13); } -// if (err5[2]) { crnProtocol.setAlarm2(14); } -// if (err5[3]) { crnProtocol.setAlarm2(15); } -// if (err5[5]) { crnProtocol.setAlarm2(16); } -// if (err5[6]) { crnProtocol.setAlarm2(17); } -// if (err5[7]) { crnProtocol.setAlarm2(18); } -// boolean[] err6 = siemensNet.getByteTransform().TransBool(result.Content, 33, 1); // 35 -// if (err6[1]) { crnProtocol.setAlarm2(19); } -// if (err6[2]) { crnProtocol.setAlarm2(20); } -// if (err6[3]) { crnProtocol.setAlarm2(21); } -// if (err6[4]) { crnProtocol.setAlarm2(22); } -// boolean[] err7 = siemensNet.getByteTransform().TransBool(result.Content, 34, 1); // 36 -// if (err7[4]) { crnProtocol.setAlarm2(23); } -// if (err7[5]) { crnProtocol.setAlarm2(24); } -// if (err7[6]) { crnProtocol.setAlarm2(25); } -// boolean[] err8 = siemensNet.getByteTransform().TransBool(result.Content, 36, 1); // 38 -// if (err8[0]) { crnProtocol.setAlarm3(26); } -// if (err8[1]) { crnProtocol.setAlarm3(27); } -// if (err8[2]) { crnProtocol.setAlarm3(28); } -// if (err8[3]) { crnProtocol.setAlarm3(29); } -// if (err8[4]) { crnProtocol.setAlarm3(30); } -// if (err8[5]) { crnProtocol.setAlarm3(31); } -// if (err8[6]) { crnProtocol.setAlarm3(32); } -// if (err8[7]) { crnProtocol.setAlarm3(33); } -// boolean[] err9 = siemensNet.getByteTransform().TransBool(result.Content, 37, 1); // 39 -// if (err9[0]) { crnProtocol.setAlarm3(34); } -// if (err9[1]) { crnProtocol.setAlarm3(35); } -// if (err9[2]) { crnProtocol.setAlarm3(36); } -// if (err9[3]) { crnProtocol.setAlarm3(37); } -// if (err9[4]) { crnProtocol.setAlarm3(38); } -// if (err9[5]) { crnProtocol.setAlarm3(39); } -// if (err9[6]) { crnProtocol.setAlarm3(40); } -// if (err9[7]) { crnProtocol.setAlarm3(41); } -// boolean[] err10 = siemensNet.getByteTransform().TransBool(result.Content, 38, 1); // 40 -// if (err10[0]) { crnProtocol.setAlarm3(42); } -// if (err10[1]) { crnProtocol.setAlarm3(43); } -// if (err10[2]) { crnProtocol.setAlarm3(44); } -// if (err10[3]) { crnProtocol.setAlarm3(45); } -// if (err10[4]) { crnProtocol.setAlarm3(46); } -// boolean[] err11 = siemensNet.getByteTransform().TransBool(result.Content, 39, 1); // 41 -// if (err11[0]) { crnProtocol.setAlarm3(47); } -// if (err11[1]) { crnProtocol.setAlarm3(48); } -// if (err11[2]) { crnProtocol.setAlarm3(49); } -// boolean[] err12 = siemensNet.getByteTransform().TransBool(result.Content, 40, 1); // 42 -// if (err12[0]) { crnProtocol.setAlarm4(50); } -// if (err12[1]) { crnProtocol.setAlarm4(51); } -// if (err12[2]) { crnProtocol.setAlarm4(52); } -// if (err12[3]) { crnProtocol.setAlarm4(53); } -// if (err12[4]) { crnProtocol.setAlarm4(54); } -// if (err12[5]) { crnProtocol.setAlarm4(55); } -// boolean[] err13 = siemensNet.getByteTransform().TransBool(result.Content, 41, 1); // 43 -// if (err13[0]) { crnProtocol.setAlarm4(56); } -// if (err13[1]) { crnProtocol.setAlarm4(57); } -// if (err13[2]) { crnProtocol.setAlarm4(58); } -// if (err13[3]) { crnProtocol.setAlarm4(59); } -// boolean[] err14 = siemensNet.getByteTransform().TransBool(result.Content, 42, 1); // 44 -// if (err14[0]) { crnProtocol.setAlarm4(60); } -// if (err14[1]) { crnProtocol.setAlarm4(61); } -// if (err14[2]) { crnProtocol.setAlarm4(62); } -// if (err14[3]) { crnProtocol.setAlarm4(63); } -// if (err14[4]) { crnProtocol.setAlarm4(64); } -// if (err14[5]) { crnProtocol.setAlarm4(65); } -// if (err14[6]) { crnProtocol.setAlarm4(66); } -// if (err14[7]) { crnProtocol.setAlarm4(67); } -// boolean[] err15 = siemensNet.getByteTransform().TransBool(result.Content, 43, 1); // 45 -// if (err15[1]) { crnProtocol.setAlarm4(68); } -// if (err15[2]) { crnProtocol.setAlarm4(69); } -// if (err15[3]) { crnProtocol.setAlarm4(70); } -// if (err15[4]) { crnProtocol.setAlarm4(71); } -// if (err15[5]) { crnProtocol.setAlarm4(72); } -// if (err15[6]) { crnProtocol.setAlarm4(73); } -// boolean[] bool1 = siemensNet.getByteTransform().TransBool(result.Content, 60, 1); // 62 -// crnProtocol.setConnStatus(bool1[0]); -// crnProtocol.setCorrection(bool1[3]); -// crnProtocol.setTuError(bool1[4]); -// crnProtocol.setNoneError(bool1[5]); -// crnProtocol.setStockError(bool1[6]); -// crnProtocol.setJobInvalid(bool1[7]); -// boolean[] bool2 = siemensNet.getByteTransform().TransBool(result.Content, 61, 1); // 63 -// crnProtocol.setIdle(bool2[0]); -// crnProtocol.setControl(bool2[1]); -// crnProtocol.setStopQuasi(bool2[2]); -// crnProtocol.setRunning(bool2[3]); -// crnProtocol.setFault(bool2[4]); -// crnProtocol.setForkHome(bool2[5]); -// crnProtocol.setForkSingleLeft(bool2[6]); -// crnProtocol.setForkSingleRight(bool2[7]); -// boolean[] bool3 = siemensNet.getByteTransform().TransBool(result.Content, 62, 1); // 64 -// crnProtocol.setForkDoubleLeft(bool3[0]); -// crnProtocol.setForkDoubleRight(bool3[1]); -// crnProtocol.setSingleHigh(bool3[2]); -// crnProtocol.setSingleLow(bool3[3]); -// crnProtocol.setDoubleHigh(bool3[4]); -// crnProtocol.setDoubleLow(bool3[5]); -// crnProtocol.setPlatformHigh(bool3[6]); -// crnProtocol.setPlatformLow(bool3[7]); -// boolean[] bool4 = siemensNet.getByteTransform().TransBool(result.Content, 64, 1); // 66 -// crnProtocol.setLoaded((short) (bool4[4]?1:0)); // 鏈夌墿 - - // 閫熷害 -// crnProtocol.setXSpeed((float) siemensNet.getByteTransform().TransInt16(result.Content, 22)); // 24 -// crnProtocol.setYSpeed((float) siemensNet.getByteTransform().TransInt16(result.Content, 24)); // 26 -// crnProtocol.setZSpeed((float) siemensNet.getByteTransform().TransInt16(result.Content, 26)); // 28 -// // 绱閲岀▼銆佹椂闀� -// crnProtocol.setXDistance((float) siemensNet.getByteTransform().TransInt32(result.Content, 88)); // 90 -// crnProtocol.setYDistance((float) siemensNet.getByteTransform().TransInt32(result.Content, 92)); // 94 -// crnProtocol.setXDuration((float) siemensNet.getByteTransform().TransInt32(result.Content, 96)); // 98 -// crnProtocol.setYDuration((float) siemensNet.getByteTransform().TransInt32(result.Content, 100)); // 102 - -// // 澧炲己 -// if (crnProtocol.getForkHome()) { -// crnProtocol.setForkPos(CrnForkPosType.HOME); -// } -// if (crnProtocol.getForkSingleLeft()) { -// crnProtocol.setForkPos(CrnForkPosType.LEFT); -// } -// if (crnProtocol.getForkSingleRight()) { -// crnProtocol.setForkPos(CrnForkPosType.RIGHT); -// } -// if (crnProtocol.getForkDoubleLeft()) { -// crnProtocol.setForkPos(CrnForkPosType._LEFT); -// } -// if (crnProtocol.getForkDoubleRight()) { -// crnProtocol.setForkPos(CrnForkPosType._RIGHT); -// } -// if (crnProtocol.getSingleHigh()) { -// crnProtocol.setLiftPos(CrnLiftPosType.UP); -// } -// if (crnProtocol.getSingleLow()) { -// crnProtocol.setLiftPos(CrnLiftPosType.DOWN); -// } -// if (crnProtocol.getDoubleHigh()) { -// crnProtocol.setLiftPos(CrnLiftPosType._UP); -// } -// if (crnProtocol.getDoubleLow()) { -// crnProtocol.setLiftPos(CrnLiftPosType._DOWN); -// } -// if (crnProtocol.getIdle()) { -// crnProtocol.setStatus(CrnStatusType.IDLE); -// } OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); // 澶嶄綅淇″彿 if (crnProtocol.getTaskFinish() == 0) { if (resetFlag) { + //鍫嗗灈鏈轰换鍔″畬鎴愬悗璁块棶wms璇锋眰浠诲姟瀹屾垚 locationDone 璐т綅澶勭悊瀹屾垚 + TaskWrkService taskWrkService = SpringUtils.getBean(TaskWrkService.class); + TaskWrk taskWrk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("wrk_no",crnProtocol.getTaskNo())); + String tasktype = null; + switch (taskWrk.getIoType()){ + case 1: + tasktype= "RK"; + break; + case 2: + tasktype= "CK"; + break; + case 3: + tasktype= "YK"; + break; + default: + tasktype= "鏈煡"; + } + Map<String, Object> map = new HashMap<>(); + map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2"); + TaskOverToWms taskOverToWms = new TaskOverToWms(); + taskOverToWms.setFeedbackFrom("WCS"); //鏉ユ簮 + taskOverToWms.setWarehouseId("1688469798893297665"); //浠撳簱鏍囪瘑 + taskOverToWms.setTaskNo(taskWrk.getTaskNo()); //浠诲姟鍙� + taskOverToWms.setTaskType(tasktype); // 浠诲姟绫诲瀷 + taskOverToWms.setContainerCode(taskWrk.getBarcode()); // 瀹瑰櫒缂栫爜 + if (taskWrk.getIoType() ==1 ){ + taskOverToWms.setEquipmentCode(String.valueOf(taskWrk.getCrnNo())); //璁惧缂栫爜 + taskOverToWms.setTargetLocationCode(taskWrk.getOriginTargetPoint()); //鐩爣搴撲綅 + }else if (taskWrk.getIoType() ==2){ + Map<Integer,String> map1 = new HashMap<>(); + map1.put(102,"J-1101"); + map1.put(106,"J-1103"); + map1.put(110,"J-1105"); + map1.put(114,"J-1107"); + map1.put(118,"J-1109"); + map1.put(122,"J-1111"); + taskOverToWms.setEquipmentCode(map1.get(taskWrk.getTargetPoint())); //璁惧缂栫爜 + taskOverToWms.setSourceLocationCode(taskWrk.getOriginStartPoint()); //婧愬簱浣� + } + + taskOverToWms.setTaskStatus("location_done"); //浠诲姟鐘舵�� + String response = null; + try { + response = new HttpHandler.Builder() + .setHeaders(map) + .setUri("10.32.53.195:8080") + .setPath("wcsManager/wcsInterface/taskStatusFeedback") + .setJson(JSON.toJSONString(taskOverToWms)) + .build() + .doPost(); + }catch (Exception e){ + log.error("鍫嗗灈鏈轰换鍔″畬鎴愶紝璇锋眰wms浠诲姟瀹屾垚鎺ュ彛澶辫触"); + } + ApiLogService apiLogService = SpringUtils.getBean(ApiLogService.class); + apiLogService.save("Wms浠诲姟瀹屾垚鎺ュ彛" + ,wmsUrl+"/wcsManager/wcsInterface/taskStatusFeedback" + ,null + ,"127.0.0.1" + ,JSON.toJSONString(taskOverToWms) + ,response + ,true + ); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("code").equals(200)){ + taskWrk.setStatus(5); + if (!taskWrkService.update(taskWrk,new EntityWrapper<TaskWrk>().eq("wrk_no",crnProtocol.getTaskNo()))){ + log.error("鍫嗗灈鏈轰换鍔″畬鎴愶紝鏀瑰彉浠诲姟鐘舵�佸け璐�"); + } + + log.info("鍫嗗灈鏈轰换鍔″畬鎴愶紝璇锋眰wms浠诲姟瀹屾垚鎺ュ彛鎴愬姛"); + }else { + log.error("鍫嗗灈鏈轰换鍔″畬鎴愶紝璇锋眰wms浠诲姟瀹屾垚鎺ュ彛瀹屾垚锛屼絾杩斿洖澶辫触"); + } + + CrnCommand crnCommand = new CrnCommand(); crnCommand.setAckFinish((short)1); if (write(crnCommand)) { resetFlag = false; } - } } @@ -401,33 +318,11 @@ } array[1] = command.getTaskNo(); array[2] = command.getTaskMode(); - array[3] = command.getSourcePosZ(); -// if (rowOne.contains(command.getSourcePosX())){ -// array[4] = (short)1; -// }else if (rowTwo.contains(command.getSourcePosX())){ -// array[4] = (short)2; -// }else if (rowThree.contains(command.getSourcePosX())){ -// array[4] = (short)3; -// }else if (rowFour.contains(command.getSourcePosX())){ -// array[4] = (short)4; -// }else { array[4] = command.getSourcePosX(); -// } array[5] = command.getSourcePosY(); - array[6] = command.getDestinationPosZ(); -// if (rowOne.contains(command.getDestinationPosX())){ -// array[7] = (short)1; -// }else if (rowTwo.contains(command.getDestinationPosX())){ -// array[7] = (short)2; -// }else if (rowThree.contains(command.getDestinationPosX())){ -// array[7] = (short)3; -// }else if (rowFour.contains(command.getDestinationPosX())){ -// array[7] = (short)4; -// }else { array[7] = command.getDestinationPosX(); -// } array[8] = command.getDestinationPosY(); array[9] = command.getCommand(); @@ -490,31 +385,15 @@ array[2] = command.getTaskMode(); array[3] = command.getSourcePosZ(); -// if (rowOne.contains(command.getSourcePosX())){ -// array[4] = (short)1; -// }else if (rowTwo.contains(command.getSourcePosX())){ -// array[4] = (short)2; -// }else if (rowThree.contains(command.getSourcePosX())){ -// array[4] = (short)3; -// }else if (rowFour.contains(command.getSourcePosX())){ -// array[4] = (short)4; -// }else { - array[4] = command.getSourcePosX(); -// } + + array[4] = command.getSourcePosX(); + array[5] = command.getSourcePosY(); array[6] = command.getDestinationPosZ(); -// if (rowOne.contains(command.getDestinationPosX())){ -// array[7] = (short)1; -// }else if (rowTwo.contains(command.getDestinationPosX())){ -// array[7] = (short)2; -// }else if (rowThree.contains(command.getDestinationPosX())){ -// array[7] = (short)3; -// }else if (rowFour.contains(command.getDestinationPosX())){ -// array[7] = (short)4; -// }else { - array[7] = command.getDestinationPosX(); -// } + + array[7] = command.getDestinationPosX(); + array[8] = command.getDestinationPosY(); array[9] = command.getCommand(); @@ -522,17 +401,6 @@ // 浣滀笟淇℃伅 OperateResult result = siemensNet.Write("DB100.0", array); -// // 浠诲姟鍙� + 瀹屾垚浣� -// short[] array2 = new short[2]; -// array2[0] = command.getTaskNo(); -// array2[1] = command.getAckFinish(); -// OperateResult result1 = siemensNet.Write("DB10.24", array2); -// -// // 缁撴潫浣� -// if (command.getAckFinish() == 0) { -// OperateResult result2 = siemensNet.Write("DB10.28.1", true); -// } - // 鏃ュ織璁板綍 // try { if (command.getAckFinish() != 1) { -- Gitblit v1.9.1