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