From f6e955d57bf5e885afde54a8c6eefe80bc1bec26 Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期四, 30 十一月 2023 17:00:06 +0800 Subject: [PATCH] #出入库任务下发 --- src/main/java/com/zy/core/thread/SiemensCrnThread.java | 92 ++++++++++++++++++++++++++++++ src/main/java/com/zy/asrs/controller/LocMastController.java | 14 ++-- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 50 ++++++++++++++-- src/main/java/com/zy/core/model/command/CrnCommand.java | 1 4 files changed, 141 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/LocMastController.java b/src/main/java/com/zy/asrs/controller/LocMastController.java index 2f80733..02f7233 100644 --- a/src/main/java/com/zy/asrs/controller/LocMastController.java +++ b/src/main/java/com/zy/asrs/controller/LocMastController.java @@ -163,13 +163,13 @@ String locNo = String.format("%02d", r) + String.format("%03d", b) + String.format("%02d", l); // 鑾峰彇鍫嗗灈鏈哄彿 int crnNo = 0; - Shelves shelves = new Shelves(param.getEndRow() - param.getStartRow() + 1, param.getCrnAmount()); - for (List<Integer> node : shelves.nodes){ - if (node.contains(r)) { - crnNo = shelves.nodes.indexOf(node) + 1; - break; - } - } +// Shelves shelves = new Shelves(param.getEndRow() - param.getStartRow() + 1, param.getCrnAmount()); +// for (List<Integer> node : shelves.nodes){ +// if (node.contains(r)) { +// crnNo = shelves.nodes.indexOf(node) + 1; +// break; +// } +// } Date now = new Date(); LocMast locMast = new LocMast(); locMast.setLocNo(locNo); diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java index 5314b84..c66b089 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -4,7 +4,9 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; +import com.core.common.R; import com.core.exception.CoolException; +import com.fasterxml.jackson.databind.ObjectMapper; import com.zy.asrs.domain.enums.TaskStatusType; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.WMSAndAGVInterfaceParam; @@ -23,6 +25,7 @@ import com.zy.core.model.CrnSlave; import com.zy.core.model.DevpSlave; import com.zy.core.model.Task; +import com.zy.core.model.command.CommandPackage; import com.zy.core.model.command.CrnCommand; import com.zy.core.model.protocol.CrnProtocol; import com.zy.core.model.protocol.StaProtocol; @@ -39,8 +42,11 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.io.IOException; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔� @@ -77,6 +83,9 @@ private StaDescMapper staDescMapper; @Autowired private CommandInfoService commandInfoService; + + @Autowired + private OpenServiceImpl openServiceImpl; @Value("${wms.url}") private String wmsUrl; @@ -157,7 +166,29 @@ } String barcode = barcodeThread.getBarcode(); if(!Cools.isEmpty(barcode)) { - +// ToWmsDTO toWmsDTO = new ToWmsDTO(); +// Map<String, Object> map = new HashMap<>(); +// map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2"); +// List<Integer> list = openServiceImpl.getInEnableRoadway(); +// +// //TaskWrk taskWrk = taskWrkService.selectByTaskNo(param.getTaskNo()); +// toWmsDTO.setWarehouseId("1688469798893297665"); +// toWmsDTO.setContainerCode(param.getContainerCode()); +// toWmsDTO.setApplyType("TUNNEL"); +// toWmsDTO.setWharfSource(null); +// toWmsDTO.setCanInboundTunnels(list); +// String response = null; +// try { +// response = new HttpHandler.Builder() +// .setHeaders(map) +// .setUri(wmsUrl) +// .setPath("wcsManager/wcsInterface/inboundTaskApply") +// .setJson(JSON.toJSONString(toWmsDTO)) +// .build() +// .doPost(); +// }catch (Exception e){ +// +// } } } @@ -211,9 +242,14 @@ if (commandInfos.isEmpty()) { continue;//鍛戒护绌� } + +// CommandPackage commandPackage = JSON.parseObject(commandInfo.getCommand(), CommandPackage.class);//鍙栧嚭鍛戒护鎶ユ枃 +// CrnCommand crnCommand = JSON.parseObject(commandPackage.getCommand().toString(), CrnCommand.class); Integer commandStep = taskWrk.getCommandStep(); CommandInfo commandInfo = commandInfos.get(commandStep); - StaProtocol staProtocol1 = JSON.parseObject(commandInfo.getCommand(), StaProtocol.class); + CommandPackage commandPackage = JSON.parseObject(commandInfo.getCommand(), CommandPackage.class);//鍙栧嚭鍛戒护鎶ユ枃 + //StaProtocol staProtocol1 = JSON.parseObject(commandInfo.getCommand(), StaProtocol.class); + StaProtocol staProtocol1 = JSON.parseObject(commandPackage.getCommand().toString(), StaProtocol.class); if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol1))) { log.error("杈撻�佺嚎鍛戒护涓嬫柟澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", taskWrk.getWrkNo()); continue;//鍛戒护涓嬪彂澶辫触 @@ -234,7 +270,7 @@ /** * 鍏ュ嚭搴� ===>> 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 */ - public synchronized void crnIoExecute(){ + public synchronized void crnIoExecute() throws IOException { for (CrnSlave crn : slaveProperties.getCrn()) { // 鑾峰彇鍫嗗灈鏈轰俊鎭� CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); @@ -279,7 +315,7 @@ /** * 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鍒板簱浣� */ - public void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol){ + public void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol) throws IOException { for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) { List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", slave.getId()).eq("crn_stn", crnStn.getStaNo())); for (StaDesc staDesc : staDescs) { @@ -328,7 +364,8 @@ continue;//鍛戒护绌� } CommandInfo commandInfo = commandInfos.get(commandStep); - CrnCommand crnCommand = JSON.parseObject(commandInfo.getCommand(), CrnCommand.class);//鍙栧嚭鍛戒护鎶ユ枃 + CommandPackage commandPackage = JSON.parseObject(commandInfo.getCommand(), CommandPackage.class);//鍙栧嚭鍛戒护鎶ユ枃 + CrnCommand crnCommand = JSON.parseObject(commandPackage.getCommand().toString(), CrnCommand.class); if (!MessageQueue.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) { log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); @@ -468,7 +505,8 @@ continue;//鍛戒护绌� } CommandInfo commandInfo = commandInfos.get(commandStep); - CrnCommand crnCommand = JSON.parseObject(commandInfo.getCommand(), CrnCommand.class);//鍙栧嚭鍛戒护鎶ユ枃 + CommandPackage commandPackage = JSON.parseObject(commandInfo.getCommand(), CommandPackage.class);//鍙栧嚭鍛戒护鎶ユ枃 + CrnCommand crnCommand = JSON.parseObject(commandPackage.getCommand().toString(), CrnCommand.class); if (!MessageQueue.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) { log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); diff --git a/src/main/java/com/zy/core/model/command/CrnCommand.java b/src/main/java/com/zy/core/model/command/CrnCommand.java index 15e1d8e..e04212a 100644 --- a/src/main/java/com/zy/core/model/command/CrnCommand.java +++ b/src/main/java/com/zy/core/model/command/CrnCommand.java @@ -1,7 +1,6 @@ package com.zy.core.model.command; import com.alibaba.fastjson.annotation.JSONField; -import com.zy.asrs.entity.CommandInfo; import com.zy.core.enums.CrnTaskModeType; import lombok.Data; diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java index 9277495..9761ec6 100644 --- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java +++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Optional; /** * 鍫嗗灈鏈虹嚎绋� @@ -76,7 +77,7 @@ break; // 鍐欏叆鏁版嵁 case 2: - write((CrnCommand) task.getData()); + write2((CrnCommand) task.getData()); break; // 澶嶄綅 case 3: @@ -411,6 +412,93 @@ // }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(); + + // 浣滀笟淇℃伅 + OperateResult result = siemensNet.Write("DB100.0", array); + + if (command.getAckFinish() != 1) { + BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class); + BasCrnOpt basCrnOpt = new BasCrnOpt( + command.getTaskNo().intValue(), // 浠诲姟鍙� + command.getCrnNo(), // 鍫嗗灈鏈篬闈炵┖] + new Date(), // 涓嬪彂鏃堕棿 + command.getTaskModeType() == null ? null : command.getTaskModeType().toString(), // 妯″紡 + command.getSourcePosX().intValue(), // 婧愭帓 + command.getSourcePosY().intValue(), // 婧愬垪 + command.getSourcePosZ().intValue(), // 婧愬眰 + null, // 婧愮珯 + command.getDestinationPosX().intValue(), // 鐩爣鎺� + command.getDestinationPosY().intValue(), // 鐩爣鍒� + command.getDestinationPosZ().intValue(), // 鐩爣灞� + null, // 鐩爣绔� + null, // 鍝嶅簲缁撴灉 + null, // 淇敼鏃堕棿 + null // 淇敼浜哄憳 + ); + bean.insert(basCrnOpt); + } + + if (result.IsSuccess) { + log.warn("鍫嗗灈鏈哄懡浠や笅鍙慬id:{},鏃堕棿锛歿}] >>>>> {}", slave.getId(), DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmsssss_F), JSON.toJSON(command)); + OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); + return true; + } else { + OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); + log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); + return false; + } + } + + /** + * 鍐欏叆鏁版嵁 + */ + private boolean write2(CrnCommand command){ + if (null == command) { + log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�"); + return false; + } + if (command.getTaskNo() == 0 && command.getAckFinish() == 0 && command.getAuto() != 1) { + command.setTaskNo((short) 9999); + } + + command.setCrnNo(slave.getId()); + short[] array = new short[10]; + if (Cools.isEmpty(command.getAckFinish())) { + array[0] = 5; + } else { + array[0] = command.getAckFinish(); + } + 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(); @@ -453,7 +541,7 @@ command.getTaskNo().intValue(), // 浠诲姟鍙� command.getCrnNo(), // 鍫嗗灈鏈篬闈炵┖] new Date(), // 涓嬪彂鏃堕棿 - command.getTaskModeType().toString(), // 妯″紡 + command.getTaskModeType() == null ? null : command.getTaskModeType().toString(), // 妯″紡 command.getSourcePosX().intValue(), // 婧愭帓 command.getSourcePosY().intValue(), // 婧愬垪 command.getSourcePosZ().intValue(), // 婧愬眰 -- Gitblit v1.9.1