Commit 06d99ddb LN

韩华接口修改

1 个父辈 a258290f
......@@ -7,37 +7,54 @@ import com.neotel.smfcore.core.api.bean.CodeValidateParam;
import com.neotel.smfcore.core.api.listener.BaseSmfApiListener;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.bean.StatusBean;
import com.neotel.smfcore.core.order.service.po.LiteOrder;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.service.manager.IDataLogManager;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.DevicesStatusUtil;
import com.neotel.smfcore.custom.hanwha.handler.bean.TMSPart;
import com.neotel.smfcore.custom.hanwha.handler.bean.TMSPartReelPos;
import com.neotel.smfcore.custom.hanwha.handler.bean.TMSRackStatus;
import com.neotel.smfcore.custom.hanwha.handler.bean.TMSReserve;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service
@Slf4j
public class HanwhaApiHandler extends BaseSmfApiListener {
//配置說明
// api:
// name: hanwha
// inCheckUrl: webservice/RequestGetPartInfo
// inCheckUrl:
// outNotifyUrl: webservice/RequestSyncPartReelPosInfo
// inNotifyUrl: webservice/RequestSyncPartReelPosInfo
// deviceStatusUrl: webservice/RequestUpdateStorageConnectionInfo
//
// codeResolveUrl: webservice/RequestGetPartInfo
// orderNotifyUrl: webservice/ResponseUpdateDeliveryReserveState
//
// hanwha:
// host: 127.0.0.1
// webPort: 18189
// apiPort: 8374
// host: 3.39.76.183
// webPort: 1337
// apiPort: 8082
@Autowired
private IStoragePosManager storagePosManager;
@Autowired
private TMSCommunicator tmsCommunicator;
@Override
public boolean isForThisApi(String apiName) {
return apiName != null && apiName.equalsIgnoreCase("hanwha")&& TMSCommunicator.isEnable();
return apiName != null && apiName.equalsIgnoreCase("hanwha") && TMSCommunicator.isEnable();
}
......@@ -45,6 +62,71 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
private TMSApis tmsApis;
@Override
public Barcode canPutInBeforeResolve(String codeResolveUrl, CodeValidateParam params) throws ValidateException {
log.info("barcode[" + params.getCode() + "] 解析条码,调用 RequestGetPartInfo");
List<TMSPart> result = tmsApis.RequestGetPartInfo(0, params.getCode());
if (result.size() > 0) {
String pn = result.get(0).getPartName();
String code = result.get(0).getReelCode();
int count = result.get(0).getResponseCount();
boolean needS = false;
if (ObjectUtil.isEmpty(pn)) {
log.info("barcode[" + params.getCode() + "] RequestGetPartInfo ,PN为空");
return null;
}
if (ObjectUtil.isEmpty(code)) {
log.info("barcode[" + params.getCode() + "] RequestGetPartInfo ,唯一码为空");
return null;
}
if (count <= 0) {
count = 0;
}
int width = 7;
int height = 8;
Barcode barcode = new Barcode();
barcode.setFullCode(params.getCode());
barcode.setAmount(count);
barcode.setPartNumber(pn);
barcode.setBarcode(code);
barcode.setHeight(height);
barcode.setPlateSize(width);
barcode = barcodeManager.saveBarcode(barcode);
log.info("barcode[" + params.getCode() + "] RequestGetPartInfo ,PN=[" + pn + "],code=[" + code + "],count=[" + count + "]新增条码准备入库");
return barcode;
}
return null;
}
@Override
public Barcode canPutInAfterResolve(String inCheckUrl, CodeValidateParam params, Barcode barcode) throws ValidateException {
log.info("barcode[" + barcode.getBarcode() + "] 准备入库,调用 RequestGetPartInfo");
List<TMSPart> result = tmsApis.RequestGetPartInfo(0, barcode.getFullCode());
if (result.size() > 0) {
String pn = result.get(0).getPartName();
String code = result.get(0).getReelCode();
boolean needS = false;
if (ObjectUtil.isNotEmpty(pn)) {
barcode.setPartNumber(pn);
needS = true;
}
if (ObjectUtil.isNotEmpty(code)) {
barcode.setBarcode(code);
needS = true;
}
int count = result.get(0).getResponseCount();
if (count > 0) {
barcode.setAmount(count);
needS = true;
}
if (needS) {
log.info("barcode[" + barcode.getBarcode() + "] 准备入库,调用 RequestGetPartInfo ,更改pn=[" + barcode.getPartNumber() + "],code=[" + barcode.getBarcode() + "],count=[" + barcode.getAmount() + "]");
barcodeManager.saveBarcode(barcode);
}
}
return barcode;
}
@Override
public void inTaskStatusChange(String inNotifyUrl, DataLog task) {
if (!task.isPutInTask()) {
return;
......@@ -79,40 +161,87 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
}
@Override
public Barcode canPutInAfterResolve(String inCheckUrl, CodeValidateParam params, Barcode barcode) throws ValidateException {
log.info("barcode[" + barcode.getBarcode() + "] 准备入库,调用 RequestGetPartInfo");
List<TMSPart> result = tmsApis.RequestGetPartInfo(0, barcode.getFullCode());
if (result.size() > 0) {
String pn = result.get(0).getPartName();
String code = result.get(0).getReelCode();
boolean needS = false;
if (ObjectUtil.isNotEmpty(pn)) {
barcode.setPartNumber(pn);
needS = true;
public void onOrderStatusChange(String orderNotifyUrl, LiteOrder liteOrder) {
//ResponseUpdateDeliveryReserveState-all work order
if (liteOrder.isClosed()) {
TMSReserve tmsReserve = tmsCommunicator.GetOrderInfo(liteOrder);
List<TMSReserve> list = new ArrayList<>();
list.add(tmsReserve);
tmsCommunicator.ResponseUpdateDeliveryReserveState(0, list, 0);
}
}
@Override
public boolean deviceStatusChanges(String deviceStatusUrl, String[] cids, Integer[] statusList) {
log.info("deviceStatusChanges ,设备状态变化[" + JsonUtil.toJsonStr(cids) + "],[" + JsonUtil.toJsonStr(statusList) + "],通知TMS");
// UpdateStorageConnectionInfo(cids,statusList);
RequestSyncRackStatusInfo(cids, statusList);
return true;
}
public void RequestSyncRackStatusInfo(String[] cids, Integer[] statusList) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = formatter.format(new Date());
if (!TMSCommunicator.isEnable()) {
return;
}
List<TMSRackStatus> SyncRackStatusDatas = new ArrayList<>();
List<String> storageIds = new ArrayList<>();
int i = 0;
for (String cid : cids) {
Storage storage = dataCache.getStorage(cid);
if (storage == null) {
continue;
}
if (ObjectUtil.isNotEmpty(code)) {
barcode.setBarcode(code);
needS = true;
String type = "Storage";
if (storage.isNLShelf() || storage.isNLPShelf() || storage.isNLMShelf() || storage.isShelf()) {
type = "Rack";
}
int count = result.get(0).getResponseCount();
if (count > 0) {
barcode.setAmount(count);
needS = true;
int status = -1;
if (statusList != null && statusList.length > i) {
status = statusList[i];
} else {
StatusBean bean = DevicesStatusUtil.getStatusBean(storage.getCid());
if (bean == null || bean.timeOut()) {
status = -1;
} else {
status = bean.getStatus();
}
}
if (needS) {
log.info("barcode[" + barcode.getBarcode() + "] 准备入库,调用 RequestGetPartInfo ,更改pn=[" + barcode.getPartNumber() + "],code=[" + barcode.getBarcode() + "],count=[" + barcode.getAmount() + "]");
barcodeManager.saveBarcode(barcode);
int flag = 0;
if (status >= 1) {
flag = 2;
}
List<StoragePos> allStorage = storagePosManager.findByStorage(storage.getId());
for (StoragePos pos : allStorage
) {
TMSRackStatus st = new TMSRackStatus();
st.setPosName(pos.getPosName());
st.setRackID(storage.getCid());
st.setFlag(flag);
st.setOutdate("");
st.setIndate("");
if (flag == 2) {
st.setIndate(dateString);
} else {
st.setOutdate(dateString);
}
SyncRackStatusDatas.add(st);
}
}
if (storageIds.size() > 0) {
tmsApis.RequestSyncRackStatusInfo(0, SyncRackStatusDatas);
}
return barcode;
}
@Override
public boolean deviceStatusChanges(String deviceStatusUrl, String[] cids,Integer[] statusList ) {
log.info("deviceStatusChanges ,设备状态变化["+ JsonUtil.toJsonStr(cids) +"],["+ JsonUtil.toJsonStr(statusList) +"],通知TMS");
UpdateStorageConnectionInfo(cids,statusList);
return true;
}
public void UpdateStorageConnectionInfo(String[] cids,Integer[] statusList) {
public void UpdateStorageConnectionInfo(String[] cids, Integer[] statusList) {
if (!TMSCommunicator.isEnable()) {
return;
}
......
......@@ -117,7 +117,9 @@ public class TMSApis {
}
/**
* 3.18 RequestSyncRackStatusInfo
* 3.18 RequestSyncRackStatusInfo 不需要
* 3.19 不需要
*
* When Rack’ Status change, send to TMS about Rack’s Status.
* @param RequestID
* @param SyncRackStatusDatas
......@@ -162,8 +164,10 @@ public class TMSApis {
}
return result;
}
////3.20 设备离线上线所有的库位信息上传
/**
*3.21 RequestUpdateStorageConnectionInfo
*3.23 RequestUpdateStorageConnectionInfo
* When Rack’s Connection Status changed, send to TMS about Rack Connection
* Status.
* @param RequestID
......
......@@ -3,6 +3,7 @@ import java.lang.management.ManagementFactory;
import java.net.InetAddress;
import java.net.URI;
import java.net.URISyntaxException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
......@@ -24,6 +25,7 @@ import com.neotel.smfcore.core.order.service.po.LiteOrderItem;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.service.manager.IDataLogManager;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.DevicesStatusUtil;
import com.neotel.smfcore.core.system.util.TaskService;
......@@ -33,6 +35,9 @@ import com.neotel.smfcore.custom.hanwha.handler.bean.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
......@@ -84,6 +89,9 @@ public class TMSCommunicator implements WsMsgReceivedListener {
@Autowired
private IStoragePosManager storagePosManager;
@Autowired
private IDataLogManager dataLogManager;
private static int gRequestID = 1000;
public static int GetRequestID()
{
......@@ -154,13 +162,6 @@ public class TMSCommunicator implements WsMsgReceivedListener {
}
}
// public void send(String message) {
// if (websocket == null) {
// throw new NullPointerException();
// }
// websocket.send(message);
// }
public void SendData(Map<String, Object> messageMap) {
if (websocket == null) {
......@@ -228,7 +229,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
SyncStorageConnectionInfo(cids.toArray(new String[cids.size()]),new Integer[]{});
List<Map<String, StoragePos>> allUsedPoss= dataCache.getAllUsedPosMap();
SyncReelData(allUsedPoss);
SyncDeliveryReserveState( );
// List<TMSPart> result= tmsApis.RequestGetPartInfo(0,"20180126153040-001");
}
});
......@@ -236,12 +237,46 @@ public class TMSCommunicator implements WsMsgReceivedListener {
thread.start();
}
public void SyncReelData(List<Map<String, StoragePos>> allUsedPosList) {
if (!TMSCommunicator.isEnable()) {
return;
}
log.info("WebSocket 已连接,开始同步物料信息 RequestSyncPartReelPosInfo");
List<TMSPartReelPos> list = new ArrayList<>();
for (Map<String, StoragePos> map : allUsedPosList) {
for (StoragePos pos :
map.values()) {
if (pos.getBarcode() == null) {
continue;
}
Storage storage = dataCache.getStorageById(pos.getStorageId());
if(storage==null){
log.error("posName["+pos.getPosName()+"],storageId["+pos.getStorageId()+"]未找到料仓");
continue;
}
Barcode barcode = pos.getBarcode();
TMSPartReelPos bean = TMSPartReelPos.newBean(barcode.getPartNumber(), barcode.getBarcode(), barcode.getAmount(),
storage.getCid(), pos.getPosName(), 4, barcode.getPutInDate().getTime(), -1);
list.add(bean);
if(list.size()>=10){
break;
}
}
}
List<TMSPart> result = tmsApis.RequestSyncPartReelPosInfo(0, list);
}
public void SyncStorageConnectionInfo(String[] cids,Integer[] statusList) {
if (!TMSCommunicator.isEnable()) {
return;
}
log.info("WebSocket 已连接,开始同步设备状态");
log.info("WebSocket 已连接,开始同步设备状态 RequestUpdateStorageConnectionInfo");
List<String> storageIds = new ArrayList<>();
List<String> storageTypes = new ArrayList<>();
List<Integer> isConns = new ArrayList<>();
......@@ -294,42 +329,77 @@ public class TMSCommunicator implements WsMsgReceivedListener {
tmsApis.RequestUpdateStorageConnectionInfo(0, storageIds, storageTypes, isConns);
}
}
public void SyncReelData(List<Map<String, StoragePos>> allUsedPosList) {
if (!TMSCommunicator.isEnable()) {
return;
public void SyncDeliveryReserveState( ) {
log.info("WebSocket 已连接,开始同步工单出库信息 ResponseUpdateDeliveryReserveState");
//同步两天内的工单出库数据
Calendar time = Calendar.getInstance();
time.setTime(new Date());
time.add(Calendar.DAY_OF_MONTH, -2);
Date start = time.getTime();
Criteria c = Criteria.where("createDate").gte(time.getTime()).lte(new Date());
Query query = new Query(c);
query.with(Sort.by(Sort.Direction.ASC, "sourceId") );
List<TMSReserve> tmsReserves=new ArrayList<>();
List<LiteOrder> orders = liteOrderManager.findByQuery(query);
for (LiteOrder order:orders
) {
tmsReserves.add(GetOrderInfo(order));
}
log.info("WebSocket 已连接,开始同步物料信息");
List<TMSPartReelPos> list = new ArrayList<>();
for (Map<String, StoragePos> map : allUsedPosList) {
ResponseUpdateDeliveryReserveState(0, tmsReserves,0 );
}
public TMSReserve GetOrderInfo(LiteOrder liteOrder) {
for (StoragePos pos :
map.values()) {
if (pos.getBarcode() == null) {
continue;
}
Storage storage = dataCache.getStorageById(pos.getStorageId());
if(storage==null){
log.error("posName["+pos.getPosName()+"],storageId["+pos.getStorageId()+"]未找到料仓");
continue;
}
Barcode barcode = pos.getBarcode();
TMSPartReelPos bean = TMSPartReelPos.newBean(barcode.getPartNumber(), barcode.getBarcode(), barcode.getAmount(),
storage.getCid(), pos.getPosName(), 4, barcode.getPutInDate().getTime(), -1);
TMSReserve tmsReserve = new TMSReserve();
tmsReserve.setReserveCode(liteOrder.getOrderNo());
list.add(bean);
if(list.size()>=10){
break;
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = formatter.format(liteOrder.getCreateDate());
tmsReserve.setDate(dateString);
List<TMSPart> tmsParts = new ArrayList<>();
//查找工单的所有任务
Criteria c = Criteria.where("sourceName").is(liteOrder.getOrderNo()).and("type").is(2);
List<DataLog> dataLogs = dataLogManager.findByQuery(new Query(c));
for (DataLog task :
dataLogs) {
//是工单出库任务
if (task.isCheckOutTask() && task.getSourceName().equals(liteOrder.getOrderNo())) {
String logCode = TMS_Code.CODE_2013;//默认已完成
if (task.isCancel()) {
logCode = TMS_Code.CODE_2012;//取消成功
} else if (task.isExecuting() || task.isWait()) {
logCode = TMS_Code.CODE_2011;//出库中
} else {
logCode = TMS_Code.CODE_2013;//已完成
}
TMSPart part = TMSPart.newBean(task.getPartNumber(), task.getBarcode(), task.getNum(), task.getNum(), logCode, task.getCid(), task.getPosName());
tmsParts.add(part);
}
}
if (liteOrder.isClosed()) {
if (tmsParts.size() > 0) {
tmsReserve.setResultCode(TMS_Code.CODE_2013);
} else {
tmsReserve.setResultCode(TMS_Code.CODE_2001);
}
} else if (liteOrder.isOutOne() || liteOrder.isOutTails() || liteOrder.isOutOne()) {
tmsReserve.setResultCode(TMS_Code.CODE_2011);
}
List<TMSPart> result = tmsApis.RequestSyncPartReelPosInfo(0, list);
tmsReserve.setPartList(tmsParts);
return tmsReserve;
}
private void parseMessage(String message) {
if (message == null || message.isEmpty() || message.startsWith("MOU")) {
return;
......@@ -361,12 +431,6 @@ public class TMSCommunicator implements WsMsgReceivedListener {
log.info("onMsgReceived: requestID=["+requestID+"],message:["+message+"],Topic=["+topic+"]");
switch (topic) {
case "RequestDeliveryReserve":
partItems = getMapValue(msgMap, "PartNames");
partCounts = getMapValue(msgMap, "Counts");
RequestDeliveryReserve(requestID, partItems, partCounts);
break;
case "RequestDeliveryOrder":
partItems = getMapValue(msgMap, "PartNames");
partCounts = getMapValue(msgMap, "Counts");
......@@ -384,13 +448,6 @@ public class TMSCommunicator implements WsMsgReceivedListener {
//3.12 RequestDeliveryOrderByReelCd
RequestDeliveryOrderByReelCd(requestID, reelCds);
break;
case "RequestResultOfDeliveryReserve":
String reserveCode = getMapValue(msgMap, "ReserveCode");
RequestResultOfDeliveryReserve(requestID, reserveCode);
break;
case "RequestListOfDeliveryReserve":
RequestListOfDeliveryReserve(requestID);
break;
case "RequestUpdateDeliveryReserveState":
List<String> reserveCodes = getMapValue(msgMap, "ReserveCodes");
List<Integer> resultCodes = getMapValue(msgMap, "ResultCodes");
......@@ -398,36 +455,49 @@ public class TMSCommunicator implements WsMsgReceivedListener {
//3.14 RequestUpdateDeliveryReserveState
RequestUpdateDeliveryReserveState(requestID, reserveCodes, resultCodes);
break;
case "RequestRegisterPartInfo":
String partName = getMapValue(msgMap, "PartName");
reelCode = getMapValue(msgMap, "ReelCode");
count = getMapValue(msgMap, "Count");
int flag = getMapValue(msgMap, "Flag");
registerID = getMapValue(msgMap, "RegisterID");
// case "RequestDeliveryReserve":
// partItems = getMapValue(msgMap, "PartNames");
// partCounts = getMapValue(msgMap, "Counts");
// RequestDeliveryReserve(requestID, partItems, partCounts);
//
RequestRegisterPartInfo(requestID, partName, reelCode, count, flag, registerID);
break;
case "RequestGetStateOfTagRegister":
registerID = getMapValue(msgMap, "RegisterID");
RequestGetStateOfTagRegister(requestID, registerID);
break;
case "RequestReStoreIn":
reelCode = getMapValue(msgMap, "ReelCode");
count = getMapValue(msgMap, "Count");
//RequestReStoreIn
RequestReStoreIn(requestID, reelCode, count);
break;
case "UpdatedRegisterPartInfoEvent":
UpdatedRegisterPartInfoEvent();
break;
case "RequestPrintLabelOrderCode":
TMSOrderCodeInfo orderCodeInfo = getMapValue(msgMap, "OrderCodeInfo");
RequestPrintLabelOrderCode(requestID, orderCodeInfo);
break;
case "RequestPrintLabelDockingCart":
TMSDockingCartInfo dockingCartInfo = getMapValue(msgMap, "DockingCartInfo");
RequestPrintLabelDockingCart(requestID, dockingCartInfo);
break;
// break;
// case "RequestResultOfDeliveryReserve":
// String reserveCode = getMapValue(msgMap, "ReserveCode");
// RequestResultOfDeliveryReserve(requestID, reserveCode);
// break;
// case "RequestListOfDeliveryReserve":
// RequestListOfDeliveryReserve(requestID);
// break;
// case "RequestRegisterPartInfo":
// String partName = getMapValue(msgMap, "PartName");
// reelCode = getMapValue(msgMap, "ReelCode");
// count = getMapValue(msgMap, "Count");
// int flag = getMapValue(msgMap, "Flag");
// registerID = getMapValue(msgMap, "RegisterID");
////
// RequestRegisterPartInfo(requestID, partName, reelCode, count, flag, registerID);
// break;
// case "RequestGetStateOfTagRegister":
// registerID = getMapValue(msgMap, "RegisterID");
// RequestGetStateOfTagRegister(requestID, registerID);
// break;
// case "RequestReStoreIn":
// reelCode = getMapValue(msgMap, "ReelCode");
// count = getMapValue(msgMap, "Count");
// //RequestReStoreIn
// RequestReStoreIn(requestID, reelCode, count);
// break;
// case "UpdatedRegisterPartInfoEvent":
// UpdatedRegisterPartInfoEvent();
// break;
// case "RequestPrintLabelOrderCode":
// TMSOrderCodeInfo orderCodeInfo = getMapValue(msgMap, "OrderCodeInfo");
// RequestPrintLabelOrderCode(requestID, orderCodeInfo);
// break;
// case "RequestPrintLabelDockingCart":
// TMSDockingCartInfo dockingCartInfo = getMapValue(msgMap, "DockingCartInfo");
// RequestPrintLabelDockingCart(requestID, dockingCartInfo);
// break;
case "NotifyLog":
break;
default:
......@@ -494,6 +564,8 @@ public class TMSCommunicator implements WsMsgReceivedListener {
*/
private void RequestDeliveryOrder(int requestID, List<String> partItem, List<Integer> partCount, boolean towerLamp) {
// 3.9 ResponseDeliveryOrder
TMSReserve tmsReserve=null;
try {
if (partItem == null || partCount == null || partItem.size() <= 0 || partCount.size() <= 0) {
......@@ -501,7 +573,8 @@ public class TMSCommunicator implements WsMsgReceivedListener {
ResponseDeliveryOrder(requestID, new ArrayList<>(), "");
return;
}
String soName = "DeliveryOrder-" + DateUtil.toDateString(new Date(), "yyyyMMddHHmmss");
String soName = "DO" + DateUtil.toDateString(new Date(), "yyyyMMddHHmmss");
List<LiteOrderItem> liteOrderItems = new ArrayList<>();
int index = 0;
for (String pn : partItem) {
......@@ -533,8 +606,8 @@ public class TMSCommunicator implements WsMsgReceivedListener {
if (curroNum > item.getNeedNum()) {
requestNum = task.getNum() - (curroNum - item.getNeedNum());
}
TMSPart p = TMSPart.newBean(task.getPartNumber(), task.getBarcode(), requestNum, task.getNum(), TMS_Code.CODE_2011, task.getCid(), task.getPosName());
log.info("RequestDeliveryOrder pn="+task.getPartNumber()+",出库成功:code="+TMS_Code.CODE_2011+",posName="+task.getPosName()+",barcode="+task.getBarcode());
TMSPart p = TMSPart.newBean(task.getPartNumber(), task.getBarcode(), requestNum, task.getNum(), TMS_Code.CODE_2010, task.getCid(), task.getPosName());
log.info("RequestDeliveryOrder pn="+task.getPartNumber()+",出库成功:code="+TMS_Code.CODE_2010+",posName="+task.getPosName()+",barcode="+task.getBarcode());
parts.add(p);
}
}
......@@ -548,6 +621,11 @@ public class TMSCommunicator implements WsMsgReceivedListener {
}
ResponseDeliveryOrder(requestID, parts, liteOrder.getOrderNo());
tmsReserve=GetOrderInfo(liteOrder);
List<TMSReserve> tmsReserves=new ArrayList<>();
tmsReserves.add(tmsReserve);
ResponseUpdateDeliveryReserveState(requestID,tmsReserves,0);
}
......@@ -570,7 +648,8 @@ public class TMSCommunicator implements WsMsgReceivedListener {
ResponseDeliveryOrderByLocation(requestID, new ArrayList<>(), new ArrayList<>(), "");
return;
}
String soName = "DeliveryOrderByLocation-" + DateUtil.toDateString(new Date(), "yyyyMMddHHmmss");
String soName = "DOL" + DateUtil.toDateString(new Date(), "yyyyMMddHHmmss");
List<LiteOrderItem> liteOrderItems = new ArrayList<>();
for (TMSPos tmsPos : Locations) {
......@@ -653,7 +732,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
ResponseDeliveryOrderByReelCd(requestID, new ArrayList<>(), new ArrayList<>(), "");
return;
}
String soName = "DeliveryOrderByReelCd-" + DateUtil.toDateString(new Date(), "yyyyMMddHHmmss");
String soName = "DOR" + DateUtil.toDateString(new Date(), "yyyyMMddHHmmss");
List<LiteOrderItem> liteOrderItems = new ArrayList<>();
for (String ri : ReelCds) {
......@@ -729,33 +808,8 @@ public class TMSCommunicator implements WsMsgReceivedListener {
for (int i=0;i<reserveCodes.size();i++){
String reserveCode=reserveCodes.get(i);
Integer code=Convert.toInt(resultCodes.get(i)) ;
String result=code+"";
TMSReserve tmsReserve=new TMSReserve();
tmsReserve.setReserveCode(reserveCode);
tmsReserve.setPartList(new ArrayList<>());
//如果code=2012,取消对应的出库任务
if(code.equals(TMS_Code.CODE_2012)){
result=TMS_Code.CODE_2014;
//查找对应的出库任务
for (DataLog task :
dataLogCollections) {
if(task.isCheckOutTask()&&task.getBarcode().equals(reserveCode) ){
//判断任务是否可取消
boolean cancelResult= taskService.cancelTask(task.getId());
if(cancelResult){
result=TMS_Code.CODE_2020;
}
log.info("RequestUpdateDeliveryReserveState 取消出库任务barcode:"+task.getBarcode()+", taskID:"+task.getId()+"成功");
break;
}
}
}
tmsReserve.setResultCode(result);
TMSReserve tmsReserve=ProcessOrder(reserveCode,code+"");
ReserveList.add(tmsReserve);
}
}
......@@ -766,69 +820,69 @@ public class TMSCommunicator implements WsMsgReceivedListener {
}
/**
* 3.19 RequestReStoreIn
* @param requestID
* @param reelCode
* @param count
*/
private void RequestReStoreIn(int requestID, String reelCode, int count) {
//3.20 ResponseReStoreIn
int code = Integer.valueOf(TMS_Code.CODE_0001);
try {
log.info("RequestReStoreIn reelcode=" + reelCode + ",reelCode=" + reelCode + ",count=" + count + ", 返回失败,code=" + code);
} catch (Exception exception) {
log.error("RequestReStoreIn reelcode=" + reelCode + ",reelCode=" + reelCode + ",count=" + count + ", error:" + exception.toString());
}
private TMSReserve ProcessOrder(String reserveCode,String resultCode) {
TMSReserve tmsReserve = new TMSReserve();
tmsReserve.setReserveCode(reserveCode);
tmsReserve.setResultCode(resultCode);
tmsReserve.setPartList(new ArrayList<>());
List<TMSPart> tmsParts = new ArrayList<>();
if (resultCode.equals(TMS_Code.CODE_2012)) {
tmsReserve.setResultCode(TMS_Code.CODE_2014);
LiteOrder order = liteOrderCache.getLiteOrder(reserveCode);
if (order != null) {
if (order.isOutBom() || order.isOutTails() || order.isOutOne()) {
ResponseReStoreIn(requestID, reelCode, count, code);
}
private void ChanagedMachineState(int requestID, String Line, String Machine, String data) {
}
private void RequestDeliveryReserve(int requestID, List<String> PartItem, List<Integer> PartCount) {
}
private void RequestResultOfDeliveryReserve(int requestID, String ReserveCode) {
}
private void RequestListOfDeliveryReserve(int requestID) {
}
private void UpdatedMessage(int NewMessageID) {
}
log.error("ProcessOrder 准备取消工单:" + reserveCode + ",未开始或已结束");
//查找所有任务看是否能取消
Collection<DataLog> dataLogCollections = taskService.getQueueTasks();
for (DataLog task :
dataLogCollections) {
//是工单出库任务
if (task.isCheckOutTask() && task.getSourceName().equals(order.getOrderNo())) {
boolean cancelResult = false;
String logCode = TMS_Code.CODE_2014;//默认不能取消
if (task.isCancel()) {
logCode = TMS_Code.CODE_2012;//取消成功
} else if (task.isExecuting() || task.isWait()) {
//判断任务是否可取消
cancelResult = taskService.cancelTask(task.getId());
if (cancelResult) {
logCode = TMS_Code.CODE_2012;//取消成功
} else {
logCode = TMS_Code.CODE_2014;//取消失败
}
} else {
logCode = TMS_Code.CODE_2013;//已完成
}
log.info("RequestUpdateDeliveryReserveState 取消出库任务,工单:" + order.getOrderNo() + ", barcode:" + task.getBarcode() + ", taskID:" + task.getId() + "取消结果:" + cancelResult);
private void RequestRegisterPartInfo(int requestID, String PartName, String ReelCode, int Count, int Flag, String RegisterID) {
}
TMSPart part = TMSPart.newBean(task.getPartNumber(), task.getBarcode(), task.getNum(), task.getNum(), logCode, task.getCid(), task.getPosName());
tmsParts.add(part);
}
}
private void RequestGetStateOfTagRegister(int requestID, String RegisterID) {
}
private void UpdatedRegisterPartInfoEvent() {
//判断工单是否可以取消,
String res = liteOrderCache.closeOrder(order.getOrderNo());
if (res.equals("smfcore.order.close.success")) {
tmsReserve.setResultCode(TMS_Code.CODE_2013);//取消成功
}
} else {
log.error("ProcessOrder 无法取消工单:" + reserveCode + ",未开始或已结束");
}
} else {
log.error("ProcessOrder 未找到工单号:" + reserveCode);
}
}
tmsReserve.setPartList(tmsParts);
return tmsReserve;
}
// private void RequestGetRackList (int requestID){
// }
//
// private void RequestCalibration (int requestID, TMSCalibrationType CalibrationType, TMSCalibrationCommand CalibrationCommand){
// }
//
// private void RequestChangeFindOption(int requestID, TMSFindCountBaseOption CountBaseOption, TMSFindDateBaseOption DateBaseOption, TMSFindOptionPriority OptionPriority){
// }
//
// private void RequestAbnormalComplete(int requestID, String ReserveCode){
// }
//
// private void RequestReregistration(int requestID, String ReelCode){
// }
private void RequestPrintLabelOrderCode(int requestID, TMSOrderCodeInfo OrderCodeInfo) {
}
private void RequestPrintLabelDockingCart(int requestID, TMSDockingCartInfo DockingCartInfo) {
private void ChanagedMachineState(int requestID, String Line, String Machine, String data) {
}
......@@ -945,97 +999,4 @@ public class TMSCommunicator implements WsMsgReceivedListener {
SendData(dataMap);
}
public void ResponseDeliveryReserve(int requestID, int ResultCode, String ReserveCode) {
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("Topic", "ResponseDeliveryReserve");
dataMap.put("RequestID", requestID);
dataMap.put("ResultCode", ResultCode);
dataMap.put("ReserveCode", ReserveCode);
SendData(dataMap);
}
public void ResponseListOfDeliveryReserve(int requestID, List<String> Reserves, List<Integer> ResultCode) {
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("Topic", "ResponseListOfDeliveryReserve");
dataMap.put("RequestID", requestID);
dataMap.put("ReserveCodes", Reserves);
dataMap.put("ResultCodes", ResultCode);
SendData(dataMap);
}
public void ResponseResultOfDeliveryReserve(int requestID, List<String> PartNames, List<Integer> PartCounts, List<Integer> ResultCodes) {
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("Topic", "ResponseResultOfDeliveryReserve");
dataMap.put("RequestID", requestID);
dataMap.put("PartNames", PartNames);
dataMap.put("PartCounts", PartCounts);
dataMap.put("ResultCodes", ResultCodes);
SendData(dataMap);
}
public void ResponseReStoreIn(int requestID, String ReelCode, int Count, int ResultCode) {
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("Topic", "ResponseReStoreIn");
dataMap.put("RequestID", requestID);
dataMap.put("ReelCode", ReelCode);
dataMap.put("Count", Count);
dataMap.put("ResultCode", ResultCode);
SendData(dataMap);
}
public void ResponseGetStateOfTagRegister(int requestID, int result, String RegisterID) {
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("Topic", "ResponseGetStateOfTagRegister");
dataMap.put("RequestID", requestID);
dataMap.put("Result", result);
dataMap.put("RegisterID", RegisterID);
SendData(dataMap);
}
public void ResponseRegisterPartInfo(int requestID, int result, String RegisterID) {
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("Topic", "ResponseRegisterPartInfo");
dataMap.put("RequestID", requestID);
dataMap.put("Result", result);
dataMap.put("RegisterID", RegisterID);
SendData(dataMap);
}
public void ResponseGetRackList(String RequestID) {
}
public void ResponseReregistrationResult(String RequestID, String ReelCode, int Result) {
}
public void ResponsePrintLabelOrderCode(int requestID, int Result, String ResultMsg) {
try {
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("Topic", "ResponsePrintLabelOrderCode");
dataMap.put("RequestID", requestID);
dataMap.put("result", Result);
dataMap.put("resultMsg", ResultMsg);
SendData(dataMap);
} catch (Exception ex) {
TMSResultMsg tMSResultMsg = new TMSResultMsg(1,ex.toString());
log.error("ResponsePrintLabelOrderCode error :"+ex.toString());
}
}
public void ResponsePrintLabelDockingCart(int requestID, int Result, String ResultMsg) {
try {
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("Topic", "ResponsePrintLabelDockingCart");
dataMap.put("RequestID", requestID);
dataMap.put("result", Result);
dataMap.put("resultMsg", ResultMsg);
SendData(dataMap);
} catch (Exception ex) {
TMSResultMsg tMSResultMsg = new TMSResultMsg(1,ex.toString());
log.error("ResponsePrintLabelOrderCode error :"+ex.toString());
}
}
}
......@@ -7,8 +7,18 @@ import java.util.HashMap;
import java.util.Map;
@Data
public class TMSPartReelStatus extends TMSPart implements Serializable {
/**
* String ResultCode Result code (Refer 5. ResultCode)
* When the request (In : 0 / Out : 1)
* When the response (ok : 0 / ng : 1)
*/
private String ReserveCode = "";
/**
* Bool TowerLamp Tower Lamp Status (true : on / false : off)
* When the request, (current tower lamp status)
* When the response, (tower lamp status to be changed)
*/
private boolean TowerLamp = false;
@Override
......
......@@ -7,6 +7,8 @@ import lombok.extern.slf4j.Slf4j;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Data
@Slf4j
......@@ -28,9 +30,9 @@ public class TMSPos implements Serializable {
public String getPosName(){
return getRowID()+"_"+getColID();
}
public void setPosName(String posName){
public void setPosName(String posName) {
if(ObjectUtil.isEmpty(posName)){
if (ObjectUtil.isEmpty(posName)) {
setColID("");
setRowID("");
return;
......@@ -43,14 +45,55 @@ public class TMSPos implements Serializable {
// setColID(posName.substring(index+1,posName.length()-1));
// }
String[] posArray = posName.split("_");
String spit = "_";
String[] posArray = posName.split(spit);
if (posArray.length >= 2) {
try {
setColID(posArray[posArray.length - 1]);
setRowID(posArray[posArray.length - 2]);
} catch (Exception ex) {
log.error("解析位置的行列失败 " + posName + "," + ex.toString());
} else {
spit = "-";
}
try {
String rowId =proStr(posName) ;
String colId = "";
int index = posName.lastIndexOf(spit);
if (index > 0) {
rowId = posName.substring(0, index);
colId = posName.substring(index + 1, posName.length());
} else {
String nPosName=proStr(posName);
if(nPosName.length()>2){
index = posName.length() - 2;
rowId = posName.substring(0, index);
colId = posName.substring(index, posName.length());
}
}
setRowID(proStr(rowId));
setColID(proStr(colId));
// setColID(posArray[posArray.length - 1]);
// setRowID(posArray[posArray.length - 2]);
} catch (Exception ex) {
log.error("解析位置的行列失败 " + posName + "," + ex.toString());
}
}
private String proStr(String input) {
// 使用正则表达式匹配数字
String regex = "\\d+";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
// 拼接匹配到的数字
StringBuilder builder = new StringBuilder();
while (matcher.find()) {
builder.append(matcher.group());
}
// 输出结果
String result = builder.toString();
return result;
}
}
......@@ -8,10 +8,25 @@ import java.util.Map;
@Data
public class TMSRackStatus extends TMSPos implements Serializable {
/**
* 0: Unconnected Rack(shelf ) / not available
* 1: Booting (not available)
* 2: Connected Rack(shelf) / ready ( available )
*/
private int Flag = 0;
/**
* Connected to the Rack(shelf)
* Format : “yyyy-MM-dd HH:mm:ss”
* Ex) April 5, 2019 PM 12:30:59 → “2019-04-05 12:30:59”
*/
private String Indate;
/**
* Unconnected to the Rack(shelf)
* Format : “yyyy-MM-dd HH:mm:ss”
* Ex) April 5, 2019 PM 12:30:59 → “2019-04-05 12:30:59”
*/
private String Outdate;
public TMSRackStatus() {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!