Commit c4bea40f LN

韩华接口调试修改

1 个父辈 06d99ddb
...@@ -427,10 +427,13 @@ public class LiteOrderCache { ...@@ -427,10 +427,13 @@ public class LiteOrderCache {
boolean singleOut = false; boolean singleOut = false;
return checkOutLiteOrder(orderNo,outBom,singleOut); return checkOutLiteOrder(orderNo,outBom,singleOut);
} }
public synchronized String checkOutLiteOrder(String orderNo, boolean outBom,boolean singleOut ) {
return checkOutLiteOrder(orderNo,outBom,singleOut,false);
}
/** /**
* 执行工单出库 * 执行工单出库
*/ */
public synchronized String checkOutLiteOrder(String orderNo, boolean outBom,boolean singleOut) { public synchronized String checkOutLiteOrder(String orderNo, boolean outBom,boolean singleOut,boolean needCheck) {
LiteOrder cacheOrder = liteOrderMap.get(orderNo); LiteOrder cacheOrder = liteOrderMap.get(orderNo);
if (cacheOrder == null) { if (cacheOrder == null) {
...@@ -462,6 +465,7 @@ public class LiteOrderCache { ...@@ -462,6 +465,7 @@ public class LiteOrderCache {
return checkOutOrder(cacheOrder).getMsgKey(); return checkOutOrder(cacheOrder).getMsgKey();
} }
log.info("开始执行工单[" + orderNo + "] outBom=" + outBom); log.info("开始执行工单[" + orderNo + "] outBom=" + outBom);
cacheOrder.setTaskReelCount(0); cacheOrder.setTaskReelCount(0);
cacheOrder.setTaskFinishedTime(-1); cacheOrder.setTaskFinishedTime(-1);
...@@ -474,9 +478,13 @@ public class LiteOrderCache { ...@@ -474,9 +478,13 @@ public class LiteOrderCache {
//liteOrderMap.put(cacheOrder.getOrderNo(), cacheOrder); //liteOrderMap.put(cacheOrder.getOrderNo(), cacheOrder);
int taskReelCount = 0; int taskReelCount = 0;
CHECKOUT_TYPE checkoutType = dataCache.getCheckOutType(); CHECKOUT_TYPE checkoutType = dataCache.getCheckOutType();
List<String> availableStorageIds = dataCache.getAvailableStorageIds();
if(needCheck&&(shortageCheck(cacheOrder,outBom))) {
return "smfcore.order.out.noTask";
}
List<String> availableStorageIds = dataCache.getAvailableStorageIds();
//其他出库模式一次性全部生成任务 //其他出库模式一次性全部生成任务
for (LiteOrderItem orderItem : cacheOrder.getOrderItems()) { for (LiteOrderItem orderItem : cacheOrder.getOrderItems()) {
orderItem.setOutNum(0); orderItem.setOutNum(0);
...@@ -570,6 +578,91 @@ public class LiteOrderCache { ...@@ -570,6 +578,91 @@ public class LiteOrderCache {
} }
return ""; return "";
} }
public boolean shortageCheck(LiteOrder cacheOrder, boolean outBom) {
String orderNo = cacheOrder.getOrderNo();
boolean shortReel=false;
try {
List<String> availableStorageIds = dataCache.getAvailableStorageIds();
CHECKOUT_TYPE checkoutType = dataCache.getCheckOutType();
log.info("工单[" + orderNo + "]出库前需要进行缺料检查");
//其他出库模式一次性全部生成任务
List<LiteOrderItem> newItems = new ArrayList<>();
for (LiteOrderItem orderItem : cacheOrder.getOrderItems()) {
//剩余未出数量
Float totalNum = orderItem.getNeedNum() * cacheOrder.getOrderTimes();
int remainNum = totalNum.intValue() - orderItem.getTotalOutNum();
//剩余未出盘数
int remainReelCount = orderItem.getNeedReelCount() - orderItem.getTotalOutReelCount();
Collection<String> excludePosIds = excludeOutPosIds();
//此PN未完成
if (remainNum > 0 || remainReelCount > 0) {
if (outBom) {
//套料出库,设置剩余数量为1,这样就只会出一盘
remainNum = 1;
remainReelCount = 0;
}
int assignNum = 0;
int assignReelCount = 0;
while (assignNum < remainNum || assignReelCount < remainReelCount) {
String partNumber = orderItem.getPn();
String reelId = orderItem.getRi();
String mpn = orderItem.getMpn();
StoragePos pos = null;
if (!Strings.isNullOrEmpty(reelId)) {
//RI
pos = storagePosManager.getByBarcode(reelId);
if (pos == null) {
log.error("工单[" + orderNo + "]RI出库时,未找到料盘[" + reelId + "],返回缺料");
shortReel=true;
orderItem.addAppendDate("shortage","true");
liteOrderItemManager.save(orderItem);
break;
} else {
excludePosIds.add(pos.getPosName());
}
break;
} else if (Strings.isNullOrEmpty(reelId) && !Strings.isNullOrEmpty(partNumber)) {
//PN
pos = storagePosManager.findPartNumberInStorages(availableStorageIds, "", partNumber, excludePosIds, checkoutType, orderItem.getAppendData());
} else if (Strings.isNullOrEmpty(reelId) && Strings.isNullOrEmpty(partNumber) && !Strings.isNullOrEmpty(mpn)) {
pos = storagePosManager.findMpnInStorages(availableStorageIds, mpn, excludePosIds, checkoutType, orderItem.getAppendData());
}
if (pos == null) {
shortReel=true;
log.error("工单[" + orderNo + "]未找到可以出库的物料PN=[" + partNumber + "],返回缺料");
orderItem.addAppendDate("shortage","true");
liteOrderItemManager.save(orderItem);
break;
} else {
assignNum = assignNum + pos.getBarcode().getAmount();
assignReelCount = assignReelCount + 1;
excludePosIds.add(pos.getPosName());
}
}
}
newItems.add(orderItem);
}
} catch (Exception ex) {
log.info("工单[" + orderNo + "]缺料检查出错:" + ex.toString());
}
if(shortReel){
cacheOrder.setClosed(true);
cacheOrder.setStatus(LITEORDER_STATUS.CLOSED);
liteOrderManager.save(cacheOrder);
liteOrderMap.put(cacheOrder.getOrderNo(), cacheOrder);
log.info("工单[" + orderNo + "]缺料,直接关闭工单 ");
}
return shortReel;
}
/** /**
* 防止仓位任务重复,需要排除掉已经分配掉的出库仓位 * 防止仓位任务重复,需要排除掉已经分配掉的出库仓位
*/ */
......
...@@ -103,6 +103,20 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li ...@@ -103,6 +103,20 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
*/ */
public Map<String,String> appendData = new HashMap<>(); public Map<String,String> appendData = new HashMap<>();
public void addAppendDate(String key ,String value){
if(appendData==null){
appendData=new HashMap<>();
}
appendData.put(key,value);
}
public String getAppend(String key) {
if (appendData != null && appendData.containsKey(key)) {
return appendData.get(key);
}
return "";
}
/** /**
* 出库是否满足要求,已出库数量大于需求数量 * 出库是否满足要求,已出库数量大于需求数量
*/ */
......
...@@ -31,7 +31,7 @@ public class MyWebSocketClient extends WebSocketClient { ...@@ -31,7 +31,7 @@ public class MyWebSocketClient extends WebSocketClient {
@Override @Override
public void onMessage(String s) { public void onMessage(String s) {
log.info("onMessage: "+s); // log.info("onMessage: "+s);
if(msgReceivedListener!=null){ if(msgReceivedListener!=null){
msgReceivedListener.onMsgReceived(s); msgReceivedListener.onMsgReceived(s);
} }
......
...@@ -11,7 +11,6 @@ import com.neotel.smfcore.core.order.service.po.LiteOrder; ...@@ -11,7 +11,6 @@ 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.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.custom.hanwha.handler.bean.TMSPart; import com.neotel.smfcore.custom.hanwha.handler.bean.TMSPart;
...@@ -55,7 +54,6 @@ public class HanwhaApiHandler extends BaseSmfApiListener { ...@@ -55,7 +54,6 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
@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();
} }
@Autowired @Autowired
...@@ -104,6 +102,10 @@ public class HanwhaApiHandler extends BaseSmfApiListener { ...@@ -104,6 +102,10 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
if (result.size() > 0) { if (result.size() > 0) {
String pn = result.get(0).getPartName(); String pn = result.get(0).getPartName();
String code = result.get(0).getReelCode(); String code = result.get(0).getReelCode();
// 2024-05-23 14:15:45.749 INFO [TMSApis.java:473] - PostJson, url=[http://192.168.101.96:8082/webservice/RequestGetPartInfo],
// send=[{"data":{"RequestID":0,"ReelCode":"20180710184319-001","Indate":"2024-05-23 14:15:45"}}],
// response=[{"RequestID":0,"Data":[{"PartName":"Z2203061201A","ReelCode":"20180710184319-001","Count":5000}],"error":null}]
boolean needS = false; boolean needS = false;
if (ObjectUtil.isNotEmpty(pn)) { if (ObjectUtil.isNotEmpty(pn)) {
barcode.setPartNumber(pn); barcode.setPartNumber(pn);
...@@ -198,6 +200,7 @@ public class HanwhaApiHandler extends BaseSmfApiListener { ...@@ -198,6 +200,7 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
if (storage == null) { if (storage == null) {
continue; continue;
} }
storageIds.add(storage.getId());
String type = "Storage"; String type = "Storage";
if (storage.isNLShelf() || storage.isNLPShelf() || storage.isNLMShelf() || storage.isShelf()) { if (storage.isNLShelf() || storage.isNLPShelf() || storage.isNLMShelf() || storage.isShelf()) {
type = "Rack"; type = "Rack";
......
...@@ -4,7 +4,7 @@ import cn.hutool.core.util.ObjectUtil; ...@@ -4,7 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.common.exception.ApiException; import com.neotel.smfcore.common.exception.ApiException;
import com.neotel.smfcore.common.utils.DateUtil; import com.neotel.smfcore.common.utils.DateUtil;
import com.neotel.smfcore.common.utils.HttpHelper; import com.neotel.smfcore.common.utils.HttpHelper;
import com.neotel.smfcore.common.utils.JsonUtil; import com.neotel.smfcore.common.utils.JsonUtil;
import com.neotel.smfcore.custom.hanwha.handler.bean.*; import com.neotel.smfcore.custom.hanwha.handler.bean.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -33,7 +33,8 @@ public class TMSApis { ...@@ -33,7 +33,8 @@ public class TMSApis {
Map<String, Object> sendData = new HashMap<>(); Map<String, Object> sendData = new HashMap<>();
sendData.put("data", dataMap); sendData.put("data", dataMap);
String responseStr = PostJson(url, sendData); String responseStr = PostJson(url, sendData);
if (!ObjectUtil.isNotEmpty(responseStr)) { if (ObjectUtil.isNotEmpty(responseStr)) {
// {"RequestID":0,"Data":[{"PartName":"Z2203061201A","ReelCode":"20180710184319-001","Count":5000}],"error":null}
Map<String, Object> dataMap2 = JsonUtil.toMap(responseStr); Map<String, Object> dataMap2 = JsonUtil.toMap(responseStr);
List<Object> jArray = (List<Object>) dataMap2.get("Data"); List<Object> jArray = (List<Object>) dataMap2.get("Data");
...@@ -142,7 +143,7 @@ public class TMSApis { ...@@ -142,7 +143,7 @@ public class TMSApis {
Map<String, Object> sendData = new HashMap<>(); Map<String, Object> sendData = new HashMap<>();
sendData.put("data", dataMap); sendData.put("data", dataMap);
String responseStr = PostJson(url, sendData); String responseStr = PostJson(url, sendData);
if (!ObjectUtil.isNotEmpty(responseStr)) { if (ObjectUtil.isNotEmpty(responseStr)) {
List<Object> resList = JsonUtil.toList(responseStr, Object.class); List<Object> resList = JsonUtil.toList(responseStr, Object.class);
for (Object obj : resList) { for (Object obj : resList) {
Map<String, Object> map = JsonUtil.toMap(JsonUtil.toJsonStr(obj)); Map<String, Object> map = JsonUtil.toMap(JsonUtil.toJsonStr(obj));
...@@ -473,4 +474,5 @@ public class TMSApis { ...@@ -473,4 +474,5 @@ public class TMSApis {
log.info("PostJson, url=["+url+"],send=["+JsonUtil.toJsonStr(sendData)+"],response=["+responseStr+"]"); log.info("PostJson, url=["+url+"],send=["+JsonUtil.toJsonStr(sendData)+"],response=["+responseStr+"]");
return responseStr; return responseStr;
} }
} }
...@@ -71,9 +71,6 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -71,9 +71,6 @@ public class TMSCommunicator implements WsMsgReceivedListener {
TMSCommunicator.configApiPort = configPort; TMSCommunicator.configApiPort = configPort;
} }
@Autowired
private TMSApis apis;
@Autowired @Autowired
private DataCache dataCache; private DataCache dataCache;
...@@ -212,11 +209,11 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -212,11 +209,11 @@ public class TMSCommunicator implements WsMsgReceivedListener {
SendData(map); SendData(map);
} }
/** // /**
* 权限验证API列表 // * 权限验证API列表
*/ // */
@Autowired // @Autowired
private SmfApi smfApi; // private SmfApi smfApi;
@Autowired @Autowired
private TMSApis tmsApis; private TMSApis tmsApis;
...@@ -231,6 +228,9 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -231,6 +228,9 @@ public class TMSCommunicator implements WsMsgReceivedListener {
SyncReelData(allUsedPoss); SyncReelData(allUsedPoss);
SyncDeliveryReserveState( ); SyncDeliveryReserveState( );
// List<TMSPart> result= tmsApis.RequestGetPartInfo(0,"20180126153040-001"); // List<TMSPart> result= tmsApis.RequestGetPartInfo(0,"20180126153040-001");
// onMsgReceived("{\"PartNames\":[\"Z2203021401A\",\"20180711092420-002\",\"20180710181845-001\"],\"Counts\":[5000,1,1],\"TowerLamp\":false,\"Topic\":\"RequestDeliveryOrder\",\"id\":2,\"uid\":439570}");
// onMsgReceived("{\"PartNames\":[\"Z2203021401A\",\"20180711092420-002\",\"20180710181845-001\"],\"Counts\":[5000,1,1],\"TowerLamp\":false,\"Topic\":\"RequestDeliveryOrder\",\"id\":1,\"uid\":472393}");
} }
}); });
...@@ -243,33 +243,63 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -243,33 +243,63 @@ public class TMSCommunicator implements WsMsgReceivedListener {
} }
log.info("WebSocket 已连接,开始同步物料信息 RequestSyncPartReelPosInfo"); log.info("WebSocket 已连接,开始同步物料信息 RequestSyncPartReelPosInfo");
List<TMSPartReelPos> list = new ArrayList<>(); // for (Map<String, StoragePos> map : allUsedPosList) {
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;
//// }
// }
// }
Map<String, Storage> allStorage = dataCache.getAllStorage();
for (Storage storage :
allStorage.values()) {
List<TMSPartReelPos> list = new ArrayList<>();
List<StoragePos> allPos = storagePosManager.findByStorage(storage.getId());
if (storage.isNLShelf() ) {
for (StoragePos pos :
allPos) {
if (pos.getBarcode() == null) {
TMSPartReelPos bean = TMSPartReelPos.newBean("", "", -1,
storage.getCid(), pos.getPosName(), 4, -1, -1);
list.add(bean);
} else {
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);
}
for (StoragePos pos : // if(list.size()>=10){
map.values()) { // break;
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); List<TMSPart> result = tmsApis.RequestSyncPartReelPosInfo(0, list);
if(list.size()>=10){ log.info("RequestSyncPartReelPosInfo storageCID="+storage.getCid()+", count="+list.size());
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()) {
...@@ -303,21 +333,24 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -303,21 +333,24 @@ public class TMSCommunicator implements WsMsgReceivedListener {
status = bean.getStatus(); status = bean.getStatus();
} }
} }
String conCode = TMS_Code.CODE_1020; String conCode = "0";
if (status <= 0) { // if (status <= 0) {
//初始化失败 // //初始化失败
conCode = TMS_Code.CODE_0002; // conCode = TMS_Code.CODE_0002;
} else if (status == 1) { // } else if (status == 1) {
conCode = TMS_Code.CODE_1020; // conCode = TMS_Code.CODE_1020;
} else if (status <= 4) { // } else if (status <= 4) {
//报警 // //报警
conCode = TMS_Code.CODE_1024; // conCode = TMS_Code.CODE_1024;
} else if (status == 5) { // } else if (status == 5) {
conCode = TMS_Code.CODE_1023; // conCode = TMS_Code.CODE_1023;
} else { // } else {
//忙碌 // //忙碌
conCode = TMS_Code.CODE_1010; // conCode = TMS_Code.CODE_1010;
// }
if(status>=1){
conCode="2";
} }
storageIds.add(storage.getCid()); storageIds.add(storage.getCid());
storageTypes.add(type); storageTypes.add(type);
...@@ -366,24 +399,32 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -366,24 +399,32 @@ public class TMSCommunicator implements WsMsgReceivedListener {
//查找工单的所有任务 //查找工单的所有任务
Criteria c = Criteria.where("sourceName").is(liteOrder.getOrderNo()).and("type").is(2); Criteria c = Criteria.where("sourceName").is(liteOrder.getOrderNo()).and("type").is(2);
List<DataLog> dataLogs = dataLogManager.findByQuery(new Query(c)); 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;//默认已完成 for (DataLog task :
if (task.isCancel()) { dataLogs) {
logCode = TMS_Code.CODE_2012;//取消成功 // if(ObjectUtil.isNotEmpty(item.getPn())&&task.getPartNumber().equals(task.getPartNumber())){
} else if (task.isExecuting() || task.isWait()) { //
// }else if(ObjectUtil.isNotEmpty(item.getRi())&&task.getBarcode().equals(task.getBarcode())){
logCode = TMS_Code.CODE_2011;//出库中 //
} else { // }else{
logCode = TMS_Code.CODE_2013;//已完成 // continue;
// }
//是工单出库任务
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);
} }
TMSPart part = TMSPart.newBean(task.getPartNumber(), task.getBarcode(), task.getNum(), task.getNum(), logCode, task.getCid(), task.getPosName());
tmsParts.add(part);
} }
}
if (liteOrder.isClosed()) { if (liteOrder.isClosed()) {
if (tmsParts.size() > 0) { if (tmsParts.size() > 0) {
tmsReserve.setResultCode(TMS_Code.CODE_2013); tmsReserve.setResultCode(TMS_Code.CODE_2013);
...@@ -428,7 +469,7 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -428,7 +469,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
String reelCode; String reelCode;
int count; int count;
log.info("onMsgReceived: requestID=["+requestID+"],message:["+message+"],Topic=["+topic+"]"); log.info("onMsgReceived: requestID=["+requestID+"],Topic=["+topic+"],message:["+message+"],");
switch (topic) { switch (topic) {
case "RequestDeliveryOrder": case "RequestDeliveryOrder":
...@@ -501,8 +542,9 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -501,8 +542,9 @@ public class TMSCommunicator implements WsMsgReceivedListener {
case "NotifyLog": case "NotifyLog":
break; break;
default: default:
// log.error("onMsgReceived:未找到对应的TOPIC: Topic=["+topic+"],requestID=["+requestID+"],message:["+message+"]");
log.error("onMsgReceived:未找到对应的TOPIC: Topic=["+topic+"],requestID=["+requestID+"],message:["+message+"]"); // log.error("onMsgReceived:未找到对应的TOPIC: Topic=["+topic+"] ");
return; return;
} }
} }
...@@ -546,7 +588,7 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -546,7 +588,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
if (autoOut) { if (autoOut) {
try { try {
liteOrderCache.checkOutLiteOrder(liteOrder.getOrderNo(), false); liteOrderCache.checkOutLiteOrder(liteOrder.getOrderNo(), false,false,true);
liteOrder = liteOrderCache.getLiteOrder(liteOrder.getOrderNo()); liteOrder = liteOrderCache.getLiteOrder(liteOrder.getOrderNo());
} catch (ValidateException ex) { } catch (ValidateException ex) {
log.error("RequestDelivery 自动执行工单[" + liteOrder.getOrderNo() + "] error:" + ex.toString()); log.error("RequestDelivery 自动执行工单[" + liteOrder.getOrderNo() + "] error:" + ex.toString());
...@@ -589,6 +631,7 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -589,6 +631,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
} }
LiteOrder liteOrder = createOrder(requestID, liteOrderItems, soName, true); LiteOrder liteOrder = createOrder(requestID, liteOrderItems, soName, true);
//能够出库成功返回2010,库存不足范围2002 Out Of Part
liteOrder = liteOrderCache.getLiteOrder(liteOrder.getOrderNo()); liteOrder = liteOrderCache.getLiteOrder(liteOrder.getOrderNo());
if (liteOrder != null) { if (liteOrder != null) {
List<DataLog> dataLogs = taskService.getAllTasks(); List<DataLog> dataLogs = taskService.getAllTasks();
...@@ -613,19 +656,36 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -613,19 +656,36 @@ public class TMSCommunicator implements WsMsgReceivedListener {
} }
if (curroNum <= 0) { if (curroNum <= 0) {
//未出库
TMSPart p = TMSPart.newBean(item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2019, "", ""); //如果缺料返回2002,否则还是返回2010
log.info("RequestDeliveryOrder pn="+item.getPn()+",出库失败:code="+TMS_Code.CODE_2019); String shortValue=item.getAppend("shortage");
parts.add(p); if(ObjectUtil.isNotEmpty(shortValue)&& shortValue.equals("true")){
//未出库
TMSPart p = TMSPart.newBean(item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2002, "", "");
log.info("RequestDeliveryOrder pn="+item.getPn()+",出库失败缺料:code="+TMS_Code.CODE_2002);
parts.add(p);
}else{
TMSPart p = TMSPart.newBean(item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2010, "", "");
log.info("RequestDeliveryOrder pn="+item.getPn()+",未出库成功:code="+TMS_Code.CODE_2010);
parts.add(p);
}
} }
} }
ResponseDeliveryOrder(requestID, parts, liteOrder.getOrderNo()); ResponseDeliveryOrder(requestID, parts, liteOrder.getOrderNo());
tmsReserve=GetOrderInfo(liteOrder);
List<TMSReserve> tmsReserves=new ArrayList<>(); //如果工单执行中,发送ResponseUpdateDeliveryReserveState,否则不需要
tmsReserves.add(tmsReserve); if(liteOrder.isClosed()){
ResponseUpdateDeliveryReserveState(requestID,tmsReserves,0); log.info("RequestDeliveryOrder 工单已关闭,不需要发送 发送ResponseUpdateDeliveryReserveState");
}else{
tmsReserve=GetOrderInfo(liteOrder);
List<TMSReserve> tmsReserves=new ArrayList<>();
tmsReserves.add(tmsReserve);
ResponseUpdateDeliveryReserveState(requestID,tmsReserves,0);
}
} }
...@@ -661,16 +721,16 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -661,16 +721,16 @@ public class TMSCommunicator implements WsMsgReceivedListener {
String posName = tmsPos.getPosName(); String posName = tmsPos.getPosName();
if (storage == null || ObjectUtil.isEmpty(posName)) { if (storage == null || ObjectUtil.isEmpty(posName)) {
posResultMap.put("", TMS_Code.CODE_2019); posResultMap.put("", TMS_Code.CODE_2002);
continue; continue;
} }
StoragePos pos = storagePosManager.getByPosName(posName); StoragePos pos = storagePosManager.getByPosName(posName);
if (pos == null) { if (pos == null) {
log.info("RequestDeliveryOrderByLocation : cid="+cid+", pos="+posName+",未找到库位号,出库结果:code="+TMS_Code.CODE_2019 ); log.info("RequestDeliveryOrderByLocation : cid="+cid+", pos="+posName+",未找到库位号,出库结果:code="+TMS_Code.CODE_2002 );
posResultMap.put(posName, TMS_Code.CODE_2019); posResultMap.put(posName, TMS_Code.CODE_2002);
} else if (pos.getBarcode() == null) { } else if (pos.getBarcode() == null) {
log.info("RequestDeliveryOrderByLocation : cid="+cid+", pos="+posName+",库位为空,出库失败,结果:code="+TMS_Code.CODE_2019 ); log.info("RequestDeliveryOrderByLocation : cid="+cid+", pos="+posName+",库位为空,出库失败,结果:code="+TMS_Code.CODE_2002 );
posResultMap.put(posName, TMS_Code.CODE_2041); posResultMap.put(posName, TMS_Code.CODE_2002);
} else { } else {
posResultMap.put(posName, TMS_Code.CODE_1011); //默认是开始送货时失败 posResultMap.put(posName, TMS_Code.CODE_1011); //默认是开始送货时失败
...@@ -974,7 +1034,7 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -974,7 +1034,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
for (TMSReserve Reserve : ReserveList) { for (TMSReserve Reserve : ReserveList) {
Map<String, Object> dataMap2 = new HashMap<>(); Map<String, Object> dataMap2 = new HashMap<>();
dataMap2.put("ReserveCode", Reserve.getReserveCode()); dataMap2.put("ReserveCode", Reserve.getReserveCode());
dataMap2.put("ResultCode", Reserve.getReserveCode()); dataMap2.put("ResultCode", Reserve.getResultCode());
dataMap2.put("Date", Reserve.getDate()); dataMap2.put("Date", Reserve.getDate());
List<Object> jArray2 = new ArrayList<>(); List<Object> jArray2 = new ArrayList<>();
for (TMSPart part : Reserve.getPartList()) { for (TMSPart part : Reserve.getPartList()) {
......
package com.neotel.smfcore.custom.hanwha.handler.bean; package com.neotel.smfcore.custom.hanwha.handler.bean;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import lombok.Data; import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -44,39 +45,48 @@ public class TMSPos implements Serializable { ...@@ -44,39 +45,48 @@ public class TMSPos implements Serializable {
// setRowID(posName.substring(0,index-1)); // setRowID(posName.substring(0,index-1));
// setColID(posName.substring(index+1,posName.length()-1)); // setColID(posName.substring(index+1,posName.length()-1));
// } // }
String rowId = proStr(posName);
String colId = "";
String spit = "_"; String spit = "_";
String[] posArray = posName.split(spit); String[] posArray = posName.split(spit);
if (posArray.length >= 2) { if (posArray.length >= 3) {
} else { } else {
spit = "-"; spit = "-";
posArray = posName.split(spit);
} }
try { try {
String rowId =proStr(posName) ; if (posArray.length == 3) {
String colId = ""; rowId = Convert.toInt(posArray[1]) + "";
int index = posName.lastIndexOf(spit); colId = Convert.toInt(posArray[2]) + "";
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)); } catch (Exception ex) {
setColID(proStr(colId)); log.error("解析出错:" + ex.toString());
try {
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());
}
}
// setColID(posArray[posArray.length - 1]); // setColID(posArray[posArray.length - 1]);
// setRowID(posArray[posArray.length - 2]); // setRowID(posArray[posArray.length - 2]);
} catch (Exception ex) { } catch (Exception ex2) {
log.error("解析位置的行列失败 " + posName + "," + ex.toString()); log.error("解析位置的行列失败 " + posName + "," + ex2.toString());
}
} }
setRowID(proStr(rowId));
setColID(proStr(colId));
} }
private String proStr(String input) { private String proStr(String input) {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!