Commit 06d99ddb LN

韩华接口修改

1 个父辈 a258290f
...@@ -7,37 +7,54 @@ import com.neotel.smfcore.core.api.bean.CodeValidateParam; ...@@ -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.api.listener.BaseSmfApiListener;
import com.neotel.smfcore.core.barcode.service.po.Barcode; import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.bean.StatusBean; 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.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.service.po.DataLog;
import com.neotel.smfcore.core.system.util.DevicesStatusUtil; 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.TMSPart;
import com.neotel.smfcore.custom.hanwha.handler.bean.TMSPartReelPos; 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 lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
@Service @Service
@Slf4j @Slf4j
public class HanwhaApiHandler extends BaseSmfApiListener { public class HanwhaApiHandler extends BaseSmfApiListener {
//配置說明 //配置說明
// api: // api:
// name: hanwha // name: hanwha
// inCheckUrl: webservice/RequestGetPartInfo // inCheckUrl:
// outNotifyUrl: webservice/RequestSyncPartReelPosInfo // outNotifyUrl: webservice/RequestSyncPartReelPosInfo
// inNotifyUrl: webservice/RequestSyncPartReelPosInfo // inNotifyUrl: webservice/RequestSyncPartReelPosInfo
// deviceStatusUrl: webservice/RequestUpdateStorageConnectionInfo // deviceStatusUrl: webservice/RequestUpdateStorageConnectionInfo
// // codeResolveUrl: webservice/RequestGetPartInfo
// orderNotifyUrl: webservice/ResponseUpdateDeliveryReserveState
//
// hanwha: // hanwha:
// host: 127.0.0.1 // host: 3.39.76.183
// webPort: 18189 // webPort: 1337
// apiPort: 8374 // apiPort: 8082
@Autowired
private IStoragePosManager storagePosManager;
@Autowired
private TMSCommunicator tmsCommunicator;
@Override @Override
public boolean isForThisApi(String apiName) { 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 { ...@@ -45,6 +62,71 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
private TMSApis tmsApis; private TMSApis tmsApis;
@Override @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) { public void inTaskStatusChange(String inNotifyUrl, DataLog task) {
if (!task.isPutInTask()) { if (!task.isPutInTask()) {
return; return;
...@@ -79,40 +161,87 @@ public class HanwhaApiHandler extends BaseSmfApiListener { ...@@ -79,40 +161,87 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
} }
@Override @Override
public Barcode canPutInAfterResolve(String inCheckUrl, CodeValidateParam params, Barcode barcode) throws ValidateException { public void onOrderStatusChange(String orderNotifyUrl, LiteOrder liteOrder) {
log.info("barcode[" + barcode.getBarcode() + "] 准备入库,调用 RequestGetPartInfo"); //ResponseUpdateDeliveryReserveState-all work order
List<TMSPart> result = tmsApis.RequestGetPartInfo(0, barcode.getFullCode());
if (result.size() > 0) { if (liteOrder.isClosed()) {
String pn = result.get(0).getPartName();
String code = result.get(0).getReelCode(); TMSReserve tmsReserve = tmsCommunicator.GetOrderInfo(liteOrder);
boolean needS = false; List<TMSReserve> list = new ArrayList<>();
if (ObjectUtil.isNotEmpty(pn)) { list.add(tmsReserve);
barcode.setPartNumber(pn); tmsCommunicator.ResponseUpdateDeliveryReserveState(0, list, 0);
needS = true; }
}
@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)) { String type = "Storage";
barcode.setBarcode(code); if (storage.isNLShelf() || storage.isNLPShelf() || storage.isNLMShelf() || storage.isShelf()) {
needS = true; type = "Rack";
} }
int count = result.get(0).getResponseCount(); int status = -1;
if (count > 0) { if (statusList != null && statusList.length > i) {
barcode.setAmount(count); status = statusList[i];
needS = true; } 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() + "]"); int flag = 0;
barcodeManager.saveBarcode(barcode); 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()) { if (!TMSCommunicator.isEnable()) {
return; return;
} }
......
...@@ -117,7 +117,9 @@ public class TMSApis { ...@@ -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. * When Rack’ Status change, send to TMS about Rack’s Status.
* @param RequestID * @param RequestID
* @param SyncRackStatusDatas * @param SyncRackStatusDatas
...@@ -162,8 +164,10 @@ public class TMSApis { ...@@ -162,8 +164,10 @@ public class TMSApis {
} }
return result; return result;
} }
////3.20 设备离线上线所有的库位信息上传
/** /**
*3.21 RequestUpdateStorageConnectionInfo *3.23 RequestUpdateStorageConnectionInfo
* When Rack’s Connection Status changed, send to TMS about Rack Connection * When Rack’s Connection Status changed, send to TMS about Rack Connection
* Status. * Status.
* @param RequestID * @param RequestID
......
...@@ -3,6 +3,7 @@ import java.lang.management.ManagementFactory; ...@@ -3,6 +3,7 @@ import java.lang.management.ManagementFactory;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
...@@ -24,6 +25,7 @@ import com.neotel.smfcore.core.order.service.po.LiteOrderItem; ...@@ -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.manager.IStoragePosManager;
import com.neotel.smfcore.core.storage.service.po.Storage; import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos; 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.service.po.DataLog;
import com.neotel.smfcore.core.system.util.DevicesStatusUtil; import com.neotel.smfcore.core.system.util.DevicesStatusUtil;
import com.neotel.smfcore.core.system.util.TaskService; import com.neotel.smfcore.core.system.util.TaskService;
...@@ -33,6 +35,9 @@ import com.neotel.smfcore.custom.hanwha.handler.bean.*; ...@@ -33,6 +35,9 @@ import com.neotel.smfcore.custom.hanwha.handler.bean.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; 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 org.springframework.stereotype.Service;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
...@@ -84,6 +89,9 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -84,6 +89,9 @@ public class TMSCommunicator implements WsMsgReceivedListener {
@Autowired @Autowired
private IStoragePosManager storagePosManager; private IStoragePosManager storagePosManager;
@Autowired
private IDataLogManager dataLogManager;
private static int gRequestID = 1000; private static int gRequestID = 1000;
public static int GetRequestID() public static int GetRequestID()
{ {
...@@ -154,13 +162,6 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -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) { public void SendData(Map<String, Object> messageMap) {
if (websocket == null) { if (websocket == null) {
...@@ -228,7 +229,7 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -228,7 +229,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
SyncStorageConnectionInfo(cids.toArray(new String[cids.size()]),new Integer[]{}); SyncStorageConnectionInfo(cids.toArray(new String[cids.size()]),new Integer[]{});
List<Map<String, StoragePos>> allUsedPoss= dataCache.getAllUsedPosMap(); List<Map<String, StoragePos>> allUsedPoss= dataCache.getAllUsedPosMap();
SyncReelData(allUsedPoss); SyncReelData(allUsedPoss);
SyncDeliveryReserveState( );
// List<TMSPart> result= tmsApis.RequestGetPartInfo(0,"20180126153040-001"); // List<TMSPart> result= tmsApis.RequestGetPartInfo(0,"20180126153040-001");
} }
}); });
...@@ -236,12 +237,46 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -236,12 +237,46 @@ public class TMSCommunicator implements WsMsgReceivedListener {
thread.start(); 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) { public void SyncStorageConnectionInfo(String[] cids,Integer[] statusList) {
if (!TMSCommunicator.isEnable()) { if (!TMSCommunicator.isEnable()) {
return; return;
} }
log.info("WebSocket 已连接,开始同步设备状态"); log.info("WebSocket 已连接,开始同步设备状态 RequestUpdateStorageConnectionInfo");
List<String> storageIds = new ArrayList<>(); List<String> storageIds = new ArrayList<>();
List<String> storageTypes = new ArrayList<>(); List<String> storageTypes = new ArrayList<>();
List<Integer> isConns = new ArrayList<>(); List<Integer> isConns = new ArrayList<>();
...@@ -294,42 +329,77 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -294,42 +329,77 @@ public class TMSCommunicator implements WsMsgReceivedListener {
tmsApis.RequestUpdateStorageConnectionInfo(0, storageIds, storageTypes, isConns); tmsApis.RequestUpdateStorageConnectionInfo(0, storageIds, storageTypes, isConns);
} }
} }
public void SyncReelData(List<Map<String, StoragePos>> allUsedPosList) {
if (!TMSCommunicator.isEnable()) { public void SyncDeliveryReserveState( ) {
return; 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<>(); ResponseUpdateDeliveryReserveState(0, tmsReserves,0 );
for (Map<String, StoragePos> map : allUsedPosList) { }
public TMSReserve GetOrderInfo(LiteOrder liteOrder) {
for (StoragePos pos : TMSReserve tmsReserve = new TMSReserve();
map.values()) { tmsReserve.setReserveCode(liteOrder.getOrderNo());
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); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if(list.size()>=10){ String dateString = formatter.format(liteOrder.getCreateDate());
break; 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);
}
tmsReserve.setPartList(tmsParts);
List<TMSPart> result = tmsApis.RequestSyncPartReelPosInfo(0, list); return tmsReserve;
} }
private void parseMessage(String message) { private void parseMessage(String message) {
if (message == null || message.isEmpty() || message.startsWith("MOU")) { if (message == null || message.isEmpty() || message.startsWith("MOU")) {
return; return;
...@@ -361,12 +431,6 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -361,12 +431,6 @@ public class TMSCommunicator implements WsMsgReceivedListener {
log.info("onMsgReceived: requestID=["+requestID+"],message:["+message+"],Topic=["+topic+"]"); log.info("onMsgReceived: requestID=["+requestID+"],message:["+message+"],Topic=["+topic+"]");
switch (topic) { switch (topic) {
case "RequestDeliveryReserve":
partItems = getMapValue(msgMap, "PartNames");
partCounts = getMapValue(msgMap, "Counts");
RequestDeliveryReserve(requestID, partItems, partCounts);
break;
case "RequestDeliveryOrder": case "RequestDeliveryOrder":
partItems = getMapValue(msgMap, "PartNames"); partItems = getMapValue(msgMap, "PartNames");
partCounts = getMapValue(msgMap, "Counts"); partCounts = getMapValue(msgMap, "Counts");
...@@ -384,13 +448,6 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -384,13 +448,6 @@ public class TMSCommunicator implements WsMsgReceivedListener {
//3.12 RequestDeliveryOrderByReelCd //3.12 RequestDeliveryOrderByReelCd
RequestDeliveryOrderByReelCd(requestID, reelCds); RequestDeliveryOrderByReelCd(requestID, reelCds);
break; break;
case "RequestResultOfDeliveryReserve":
String reserveCode = getMapValue(msgMap, "ReserveCode");
RequestResultOfDeliveryReserve(requestID, reserveCode);
break;
case "RequestListOfDeliveryReserve":
RequestListOfDeliveryReserve(requestID);
break;
case "RequestUpdateDeliveryReserveState": case "RequestUpdateDeliveryReserveState":
List<String> reserveCodes = getMapValue(msgMap, "ReserveCodes"); List<String> reserveCodes = getMapValue(msgMap, "ReserveCodes");
List<Integer> resultCodes = getMapValue(msgMap, "ResultCodes"); List<Integer> resultCodes = getMapValue(msgMap, "ResultCodes");
...@@ -398,36 +455,49 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -398,36 +455,49 @@ public class TMSCommunicator implements WsMsgReceivedListener {
//3.14 RequestUpdateDeliveryReserveState //3.14 RequestUpdateDeliveryReserveState
RequestUpdateDeliveryReserveState(requestID, reserveCodes, resultCodes); RequestUpdateDeliveryReserveState(requestID, reserveCodes, resultCodes);
break; break;
case "RequestRegisterPartInfo": // case "RequestDeliveryReserve":
String partName = getMapValue(msgMap, "PartName"); // partItems = getMapValue(msgMap, "PartNames");
reelCode = getMapValue(msgMap, "ReelCode"); // partCounts = getMapValue(msgMap, "Counts");
count = getMapValue(msgMap, "Count"); // RequestDeliveryReserve(requestID, partItems, partCounts);
int flag = getMapValue(msgMap, "Flag");
registerID = getMapValue(msgMap, "RegisterID");
// //
RequestRegisterPartInfo(requestID, partName, reelCode, count, flag, registerID); // break;
break; // case "RequestResultOfDeliveryReserve":
case "RequestGetStateOfTagRegister": // String reserveCode = getMapValue(msgMap, "ReserveCode");
registerID = getMapValue(msgMap, "RegisterID"); // RequestResultOfDeliveryReserve(requestID, reserveCode);
RequestGetStateOfTagRegister(requestID, registerID); // break;
break; // case "RequestListOfDeliveryReserve":
case "RequestReStoreIn": // RequestListOfDeliveryReserve(requestID);
reelCode = getMapValue(msgMap, "ReelCode"); // break;
count = getMapValue(msgMap, "Count"); // case "RequestRegisterPartInfo":
//RequestReStoreIn // String partName = getMapValue(msgMap, "PartName");
RequestReStoreIn(requestID, reelCode, count); // reelCode = getMapValue(msgMap, "ReelCode");
break; // count = getMapValue(msgMap, "Count");
case "UpdatedRegisterPartInfoEvent": // int flag = getMapValue(msgMap, "Flag");
UpdatedRegisterPartInfoEvent(); // registerID = getMapValue(msgMap, "RegisterID");
break; ////
case "RequestPrintLabelOrderCode": // RequestRegisterPartInfo(requestID, partName, reelCode, count, flag, registerID);
TMSOrderCodeInfo orderCodeInfo = getMapValue(msgMap, "OrderCodeInfo"); // break;
RequestPrintLabelOrderCode(requestID, orderCodeInfo); // case "RequestGetStateOfTagRegister":
break; // registerID = getMapValue(msgMap, "RegisterID");
case "RequestPrintLabelDockingCart": // RequestGetStateOfTagRegister(requestID, registerID);
TMSDockingCartInfo dockingCartInfo = getMapValue(msgMap, "DockingCartInfo"); // break;
RequestPrintLabelDockingCart(requestID, dockingCartInfo); // case "RequestReStoreIn":
break; // 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": case "NotifyLog":
break; break;
default: default:
...@@ -494,6 +564,8 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -494,6 +564,8 @@ public class TMSCommunicator implements WsMsgReceivedListener {
*/ */
private void RequestDeliveryOrder(int requestID, List<String> partItem, List<Integer> partCount, boolean towerLamp) { private void RequestDeliveryOrder(int requestID, List<String> partItem, List<Integer> partCount, boolean towerLamp) {
// 3.9 ResponseDeliveryOrder // 3.9 ResponseDeliveryOrder
TMSReserve tmsReserve=null;
try { try {
if (partItem == null || partCount == null || partItem.size() <= 0 || partCount.size() <= 0) { if (partItem == null || partCount == null || partItem.size() <= 0 || partCount.size() <= 0) {
...@@ -501,7 +573,8 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -501,7 +573,8 @@ public class TMSCommunicator implements WsMsgReceivedListener {
ResponseDeliveryOrder(requestID, new ArrayList<>(), ""); ResponseDeliveryOrder(requestID, new ArrayList<>(), "");
return; return;
} }
String soName = "DeliveryOrder-" + DateUtil.toDateString(new Date(), "yyyyMMddHHmmss"); String soName = "DO" + DateUtil.toDateString(new Date(), "yyyyMMddHHmmss");
List<LiteOrderItem> liteOrderItems = new ArrayList<>(); List<LiteOrderItem> liteOrderItems = new ArrayList<>();
int index = 0; int index = 0;
for (String pn : partItem) { for (String pn : partItem) {
...@@ -533,8 +606,8 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -533,8 +606,8 @@ public class TMSCommunicator implements WsMsgReceivedListener {
if (curroNum > item.getNeedNum()) { if (curroNum > item.getNeedNum()) {
requestNum = task.getNum() - (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()); 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_2011+",posName="+task.getPosName()+",barcode="+task.getBarcode()); log.info("RequestDeliveryOrder pn="+task.getPartNumber()+",出库成功:code="+TMS_Code.CODE_2010+",posName="+task.getPosName()+",barcode="+task.getBarcode());
parts.add(p); parts.add(p);
} }
} }
...@@ -548,6 +621,11 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -548,6 +621,11 @@ public class TMSCommunicator implements WsMsgReceivedListener {
} }
ResponseDeliveryOrder(requestID, parts, liteOrder.getOrderNo()); 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 { ...@@ -570,7 +648,8 @@ public class TMSCommunicator implements WsMsgReceivedListener {
ResponseDeliveryOrderByLocation(requestID, new ArrayList<>(), new ArrayList<>(), ""); ResponseDeliveryOrderByLocation(requestID, new ArrayList<>(), new ArrayList<>(), "");
return; return;
} }
String soName = "DeliveryOrderByLocation-" + DateUtil.toDateString(new Date(), "yyyyMMddHHmmss"); String soName = "DOL" + DateUtil.toDateString(new Date(), "yyyyMMddHHmmss");
List<LiteOrderItem> liteOrderItems = new ArrayList<>(); List<LiteOrderItem> liteOrderItems = new ArrayList<>();
for (TMSPos tmsPos : Locations) { for (TMSPos tmsPos : Locations) {
...@@ -653,7 +732,7 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -653,7 +732,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
ResponseDeliveryOrderByReelCd(requestID, new ArrayList<>(), new ArrayList<>(), ""); ResponseDeliveryOrderByReelCd(requestID, new ArrayList<>(), new ArrayList<>(), "");
return; return;
} }
String soName = "DeliveryOrderByReelCd-" + DateUtil.toDateString(new Date(), "yyyyMMddHHmmss"); String soName = "DOR" + DateUtil.toDateString(new Date(), "yyyyMMddHHmmss");
List<LiteOrderItem> liteOrderItems = new ArrayList<>(); List<LiteOrderItem> liteOrderItems = new ArrayList<>();
for (String ri : ReelCds) { for (String ri : ReelCds) {
...@@ -729,33 +808,8 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -729,33 +808,8 @@ public class TMSCommunicator implements WsMsgReceivedListener {
for (int i=0;i<reserveCodes.size();i++){ for (int i=0;i<reserveCodes.size();i++){
String reserveCode=reserveCodes.get(i); String reserveCode=reserveCodes.get(i);
Integer code=Convert.toInt(resultCodes.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); ReserveList.add(tmsReserve);
} }
} }
...@@ -766,69 +820,69 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -766,69 +820,69 @@ public class TMSCommunicator implements WsMsgReceivedListener {
} }
/** private TMSReserve ProcessOrder(String reserveCode,String resultCode) {
* 3.19 RequestReStoreIn TMSReserve tmsReserve = new TMSReserve();
* @param requestID tmsReserve.setReserveCode(reserveCode);
* @param reelCode tmsReserve.setResultCode(resultCode);
* @param count tmsReserve.setPartList(new ArrayList<>());
*/ List<TMSPart> tmsParts = new ArrayList<>();
private void RequestReStoreIn(int requestID, String reelCode, int count) { if (resultCode.equals(TMS_Code.CODE_2012)) {
//3.20 ResponseReStoreIn tmsReserve.setResultCode(TMS_Code.CODE_2014);
int code = Integer.valueOf(TMS_Code.CODE_0001); LiteOrder order = liteOrderCache.getLiteOrder(reserveCode);
try { if (order != null) {
log.info("RequestReStoreIn reelcode=" + reelCode + ",reelCode=" + reelCode + ",count=" + count + ", 返回失败,code=" + code); if (order.isOutBom() || order.isOutTails() || order.isOutOne()) {
} catch (Exception exception) {
log.error("RequestReStoreIn reelcode=" + reelCode + ",reelCode=" + reelCode + ",count=" + count + ", error:" + exception.toString());
}
ResponseReStoreIn(requestID, reelCode, count, code); log.error("ProcessOrder 准备取消工单:" + reserveCode + ",未开始或已结束");
} //查找所有任务看是否能取消
Collection<DataLog> dataLogCollections = taskService.getQueueTasks();
for (DataLog task :
private void ChanagedMachineState(int requestID, String Line, String Machine, String data) { dataLogCollections) {
} //是工单出库任务
if (task.isCheckOutTask() && task.getSourceName().equals(order.getOrderNo())) {
private void RequestDeliveryReserve(int requestID, List<String> PartItem, List<Integer> PartCount) { boolean cancelResult = false;
String logCode = TMS_Code.CODE_2014;//默认不能取消
} if (task.isCancel()) {
private void RequestResultOfDeliveryReserve(int requestID, String ReserveCode) { logCode = TMS_Code.CODE_2012;//取消成功
} } else if (task.isExecuting() || task.isWait()) {
private void RequestListOfDeliveryReserve(int requestID) { //判断任务是否可取消
} cancelResult = taskService.cancelTask(task.getId());
if (cancelResult) {
private void UpdatedMessage(int NewMessageID) { 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 { ...@@ -945,97 +999,4 @@ public class TMSCommunicator implements WsMsgReceivedListener {
SendData(dataMap); 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; ...@@ -7,8 +7,18 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
@Data @Data
public class TMSPartReelStatus extends TMSPart implements Serializable { 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 = ""; 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; private boolean TowerLamp = false;
@Override @Override
......
...@@ -7,6 +7,8 @@ import lombok.extern.slf4j.Slf4j; ...@@ -7,6 +7,8 @@ import lombok.extern.slf4j.Slf4j;
import java.io.Serializable; import java.io.Serializable;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Data @Data
@Slf4j @Slf4j
...@@ -28,9 +30,9 @@ public class TMSPos implements Serializable { ...@@ -28,9 +30,9 @@ public class TMSPos implements Serializable {
public String getPosName(){ public String getPosName(){
return getRowID()+"_"+getColID(); return getRowID()+"_"+getColID();
} }
public void setPosName(String posName){ public void setPosName(String posName) {
if(ObjectUtil.isEmpty(posName)){ if (ObjectUtil.isEmpty(posName)) {
setColID(""); setColID("");
setRowID(""); setRowID("");
return; return;
...@@ -43,14 +45,55 @@ public class TMSPos implements Serializable { ...@@ -43,14 +45,55 @@ public class TMSPos implements Serializable {
// setColID(posName.substring(index+1,posName.length()-1)); // setColID(posName.substring(index+1,posName.length()-1));
// } // }
String[] posArray = posName.split("_"); String spit = "_";
String[] posArray = posName.split(spit);
if (posArray.length >= 2) { if (posArray.length >= 2) {
try {
setColID(posArray[posArray.length - 1]); } else {
setRowID(posArray[posArray.length - 2]); spit = "-";
} catch (Exception ex) { }
log.error("解析位置的行列失败 " + posName + "," + ex.toString()); 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; ...@@ -8,10 +8,25 @@ import java.util.Map;
@Data @Data
public class TMSRackStatus extends TMSPos implements Serializable { 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; 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; 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; private String Outdate;
public TMSRackStatus() { public TMSRackStatus() {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!