Commit 612eb27a LN

韩华接口测试修改

1 个父辈 ce261dff
......@@ -669,8 +669,21 @@ public class DataCache {
return storageInventoryMap;
}
public List<InventoryItem> getInventoryByPN(String pn) {
Map<String, InventoryItem> inventoryItemMap = getAllInventory(null, "");
public List<InventoryItem> getInventoryByPN(String pn,List<String> cids) {
List<String> storageIds=new ArrayList<>();
if(cids.size()>0){
for (String cid :
cids) {
Storage storage=getStorage(cid);
if(storage!=null){
storageIds.add(storage.getId());
}
}
}
if(storageIds.size()<=0){
storageIds=null;
}
Map<String, InventoryItem> inventoryItemMap = getAllInventory(storageIds, "");
List<InventoryItem> list = Lists.newArrayList(inventoryItemMap.values());
List<InventoryItem> resultList = new ArrayList<>();
......@@ -816,7 +829,7 @@ public class DataCache {
}
List<String> availableStorageIds = new ArrayList<>();
for (Storage storage : getAllStorage().values()) {
if(!cidList.contains(storage)){
if(!cidList.contains(storage.getCid())){
continue;
}
StatusBean bean = DevicesStatusUtil.getStatusBean(storage.getCid());
......
......@@ -638,12 +638,21 @@ public class LiteOrderCache {
liteOrderItemManager.save(orderItem);
break;
} else {
excludePosIds.add(pos.getPosName());
if (ObjectUtil.isNotEmpty(pos.getBarcode().getLockId())) {
log.info("工单[" + orderNo + "] RI=[" + pos.getBarcode().getBarcode() + "] 物料已被锁定,返回缺料");
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());
}
......@@ -940,6 +949,10 @@ public class LiteOrderCache {
log.info("工单[" + orderNo + "]RI出库,任务数[" + taskReelCount + "]出库位置仓位【" + pos.getPosName() + "】RI=[" + pos.getBarcode().getBarcode() + "]已在操作队列中,跳过不处理");
break;
}
if(ObjectUtil.isNotEmpty(pos.getBarcode().getLockId())){
log.info("工单[" + orderNo + "]RI出库 RI=[" + pos.getBarcode().getBarcode() + "] 物料已被锁定,跳过");
break;
}
}else{
log.info("工单[" + orderNo + "]RI出库时,库存中未找到料盘["+reelId+"]");
}
......
package com.neotel.smfcore.core.order.service.po;
import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.common.base.BasePo;
import com.neotel.smfcore.common.utils.StorageConstants;
import com.neotel.smfcore.common.utils.StringUtils;
......@@ -228,4 +229,28 @@ public class LiteOrder extends BasePo implements Serializable {
}
return "";
}
public void setCidList(List<String> rackList){
String cids=String.join(",",rackList);
addAppendDate("cids",cids);
}
public List<String> getCidList() {
String cids = getAppend("cids");
if (ObjectUtil.isEmpty(cids)) {
return new ArrayList<>();
} else {
String[] cidList = cids.split(",");
List<String> rackList = new ArrayList<>();
for (String cid :
cidList) {
rackList.add(cid);
}
return rackList;
}
}
}
......@@ -113,6 +113,7 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
barcode.setHeight(height);
barcode.setPlateSize(width);
Date proDate = getDate(result.get(0).getProductionDate());
if (proDate != null) {
barcode.setProduceDate(proDate);
......@@ -123,6 +124,10 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
barcode.setExpireDate(expDate);
}
Date lDate=getDate(result.get(0).getWarehousingDate());
if(lDate!=null){
barcode.setPutInDate(lDate);
}
//判断Pn是否存在
Component component = componentManager.findOneByPN(pn);
......
......@@ -143,13 +143,13 @@ public class TMSCommunicator implements WsMsgReceivedListener {
log.info("启动 webService 状态检查");
while(true) {
try {
TimeUnit.SECONDS.sleep(4);
if (needCheck) {
stateCheck();
}
if(waitSync&&System.currentTimeMillis()>syncTime){
SyncData();
}
TimeUnit.SECONDS.sleep(6);
if (needCheck) {
stateCheck();
}
} catch (Exception e) {
log.error("webService" + e.getMessage());
}
......@@ -720,7 +720,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
if (ObjectUtil.isNotEmpty(shortValue) && shortValue.equals("true")) {
//查找库存中是否有此物料,如果数量不足返回2003,否则返回2002
TMSPart p=tmsUtil.GetPnTMSPart(requestCmd,parts,item);
TMSPart p=tmsUtil.GetPnTMSPart(requestCmd,parts,item,rackList);
// List<InventoryItem> itmes = dataCache.getInventoryByPN(item.getPn());
// TMSPart p;
// if (itmes.size() > 0) {
......@@ -966,11 +966,12 @@ public class TMSCommunicator implements WsMsgReceivedListener {
List<StoragePos> lockPosList = storagePosManager.findLockPos(liteOrder.getOrderNo());
//同步锁定物料状态
tmsUtil.SyncReelLockS(lockPosList);
List<TMSPart> parts =tmsUtil.GetReserveList(requestCmd,liteOrder,lockPosList);
List<TMSPart> parts =tmsUtil.GetReserveList(requestCmd,liteOrder,lockPosList,rackList);
ResponseDeliveryReserve(responseCmd, requestID, parts, liteOrder.getOrderNo(), "");
OrderProEndUpdateState(requestCmd, requestID, liteOrder);
return;
}
}
......@@ -1057,6 +1058,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
ResponseDeliveryReserveByLocation(responseCmd, requestID, Locations, rCodes, liteOrder.getOrderNo());
OrderProEndUpdateState(requestCmd, requestID, liteOrder);
return;
} catch (Exception exception) {
log.error(requestCmd + " error:" + exception.toString());
......@@ -1092,13 +1094,20 @@ public class TMSCommunicator implements WsMsgReceivedListener {
posResultMap.put(ri, TMS_Code.CODE_2041);
log.info(requestCmd + " : ri=" + ri + ", 未找到物料,出库失败,code=" + TMS_Code.CODE_2041);
} else {
posResultMap.put(ri, TMS_Code.CODE_1011); //默认是开始送货时失败
//如果物料已被锁定,不能再次锁定
if(ObjectUtil.isNotEmpty(pos.getBarcode().getLockId())){
posResultMap.put(ri, TMS_Code.CODE_2003);
log.info(requestCmd + " : ri=" + ri + ", 已被锁定:"+pos.getBarcode().getLockId()+",无法再次锁定,code=" + TMS_Code.CODE_2003);
}else{
posResultMap.put(ri, TMS_Code.CODE_1011); //默认是开始送货时失败
LiteOrderItem item = new LiteOrderItem();
item.setRi(pos.getBarcode().getBarcode());
item.setNeedNum(1);
liteOrderItems.add(item);
log.info(requestCmd + " : ri=" + ri + ", 可出库,准备创建工单");
}
LiteOrderItem item = new LiteOrderItem();
item.setRi(pos.getBarcode().getBarcode());
item.setNeedNum(1);
liteOrderItems.add(item);
log.info(requestCmd + " : ri=" + ri + ", 可出库,准备创建工单");
}
}
......@@ -1129,6 +1138,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
ResponseDeliveryReserveByReelCd(responseCmd, requestID, ReelCds, rCodes, liteOrder.getOrderNo());
OrderProEndUpdateState(requestCmd, requestID, liteOrder);
return;
} catch (Exception exception) {
log.error(requestCmd + " error:" + exception.toString());
......@@ -1267,7 +1277,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
* @param OrderCode
*/
public void ResponseDeliveryReserveByLocation(String topic,int requestID, List<TMSPos> Locations, List<Integer> ResultCodes, String OrderCode) {
ResponseDeliveryReserveByLocation(topic,requestID,Locations,ResultCodes,OrderCode);
ResponseDeliveryOrderByLocation(topic,requestID,Locations,ResultCodes,OrderCode);
// Map<String, Object> dataMap = new HashMap<>();
// dataMap.put("Topic", topic);
// dataMap.put("RequestID", requestID);
......
......@@ -160,7 +160,7 @@ public class TMSUtil {
}
LiteOrder liteOrder = new LiteOrder(orderNo, items);
liteOrder.setSource("DeliveryOrder");
liteOrder.setSource(requestCmd);
LiteOrder dbOrder = liteOrderManager.findByOrderNo(liteOrder.getOrderNo());
if (dbOrder != null) {
orderNo = orderNo + "-" + requestID;
......@@ -173,8 +173,10 @@ public class TMSUtil {
return null;
}
}
liteOrder.setCidList(rackList);
log.info(requestCmd + ":新建工单:" + liteOrder.getOrderNo() + ",共" + items.size() + "条工单详情,自动执行:" + autoOut);
liteOrder = liteOrderManager.createWithItems(liteOrder);
liteOrderCache.addOrderToMap(liteOrder);
if (autoOut) {
try {
......@@ -193,8 +195,10 @@ public class TMSUtil {
return liteOrder;
}
public TMSPart GetPnTMSPart(String requestCmd,List<TMSPart> parts, LiteOrderItem item){
List<InventoryItem> items = dataCache.getInventoryByPN(item.getPn());
public TMSPart GetPnTMSPart(String requestCmd,List<TMSPart> parts, LiteOrderItem item,List<String> rackIdS){
List<InventoryItem> items = dataCache.getInventoryByPN(item.getPn(),rackIdS);
TMSPart p;
if (items.size() > 0 ) {
......@@ -226,7 +230,7 @@ public class TMSUtil {
}
return p;
}
public List<TMSPart> GetReserveList(String requestCmd, LiteOrder liteOrder,List<StoragePos> lockPosList) {
public List<TMSPart> GetReserveList(String requestCmd, LiteOrder liteOrder,List<StoragePos> lockPosList,List<String> rackIds) {
List<TMSPart> parts = new ArrayList<>();
......@@ -254,40 +258,19 @@ public class TMSUtil {
}
if (curroNum <= 0) {
//预留失败
// List<InventoryItem> items = dataCache.getInventoryByPN(item.getPn());
TMSPart p=GetPnTMSPart(requestCmd,parts,item);
// if (items.size() > 0 ) {
//
// //如果库存的料都是已锁定的,需要返回2003 .已锁定的需要更新缓存
// InventoryItem inventoryItem=items.get(0);
// if(inventoryItem.getLockReel()>=inventoryItem.getStockReel()) {
// //如果是有库存但是库存不足,发送2001
// p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2003, "", "");
// log.info(requestCmd + " pn=" + item.getPn() + ",出库失败缺料,库存不足:code=" + TMS_Code.CODE_2003);
// }
// else {
// //如果是有库存但是库存不足,发送2001
// p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2001, "", "");
// log.info(requestCmd + " pn=" + item.getPn() + ",出库失败缺料,库存不足:code=" + TMS_Code.CODE_2001);
// }
// } else {
//
// //判断pn是否存在,存在返回2002,否则返回2003
// Component component = componentManager.findOneByPN(item.getPn());
// if (component == null) {
// //pn不存在,返回2002
// p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2002, "", "");
// log.info(requestCmd + " pn=" + item.getPn() + ",出库失败缺料,PN不存在:code=" + TMS_Code.CODE_2002);
// } else {
// //库存无此物料,发送2003
// p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2003, "", "");
// log.info(requestCmd + " pn=" + item.getPn() + ",出库失败缺料,库存无此料:code=" + TMS_Code.CODE_2003);
// }
// }
parts.add(p);
String shortValue = item.getAppend("shortage");
if (ObjectUtil.isEmpty(shortValue)) {
shortValue = "";
}
if (ObjectUtil.isNotEmpty(shortValue) && shortValue.equals("true")) {
//查找库存中是否有此物料,如果数量不足返回2003,否则返回2002
TMSPart p=GetPnTMSPart(requestCmd,parts,item,rackIds);
parts.add(p);
} else {
TMSPart p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2010, "", "");
log.info(requestCmd+" pn=" + item.getPn() + ",未出库成功:code=" + TMS_Code.CODE_2010);
parts.add(p);
}
}
......@@ -431,7 +414,7 @@ public class TMSUtil {
List<StoragePos> lockPosList = storagePosManager.findLockPos(order.getOrderNo());
log.info("ProcessOrder: 当前有未关闭的工单 ,工单出库失败");
tmsParts = GetReserveList("ProcessOrder", order,lockPosList);
tmsParts = GetReserveList("ProcessOrder", order,lockPosList,order.getCidList());
} else { //工单出库
String result = liteOrderCache.checkOutLiteOrder(order.getOrderNo(), false, false, true);
......
......@@ -30,7 +30,7 @@ public class TMSPart extends TMSPos implements Serializable {
//过期日期
public String ExpiryDate = "";
//登录韩华系统的日期。 TODO 需要保存下来
//登录韩华系统的日期。 需要保存下来,需要登录日期做先进先出。 已保存在最后一次入库时间中
public String WarehousingDate = "";
public static TMSPart newBean(int index, String pn,String barcode,int requestCount,int responseCount,String resultCode,String cid,String posName ) {
......
......@@ -22,6 +22,8 @@ public class TMSPos implements Serializable {
private String PosId;
public Map<String,Object> getJson()
{
Map<String,Object> jObject = new HashMap<>();
......@@ -58,10 +60,14 @@ public class TMSPos implements Serializable {
}
public String getPosName(){
return getRowID()+"_"+getColID();
return getRackID()+"_"+getRowID()+"_"+getColID();
}
public void setPosName(String posName) {
//如果库位是 01_01_11_05 , 01作为rackID, 01_11是 RowID, 05 是ColId
// 1284M02_01_11_01
//如果下划线分割只有三列,第一列是rackID, 第二列是rowID,第三列是colID
setPosId(posName);
if (ObjectUtil.isEmpty(posName)) {
setColID("");
......@@ -69,57 +75,71 @@ public class TMSPos implements Serializable {
return;
}
//posName=rowId_colId
// int index=posName.indexOf('_');
// if(index>0){
// setRowID(posName.substring(0,index-1));
// setColID(posName.substring(index+1,posName.length()-1));
// }
String rowId = proStr(posName);
String rowId = "";
String colId = "";
String spit = "_";
String[] posArray = posName.split(spit);
if (posArray.length >= 3) {
if (posArray.length == 4) {
rowId = posArray[1] + spit + posArray[2];
colId = posArray[3];
} else if (posArray.length == 3) {
rowId = posArray[1];
colId = posArray[2];
} else {
spit = "-";
posArray = posName.split(spit);
}
try {
if (posArray.length == 3) {
rowId = Convert.toInt(proStr(posArray[1])) + "";
colId = Convert.toInt(posArray[2]) + "";
}else if(posArray.length==4){
rowId = Convert.toInt(proStr(posArray[1]+posArray[2])) + "";
colId = Convert.toInt(posArray[3]) + "";
}
} catch (Exception ex) {
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());
if (posArray.length == 4) {
rowId = posArray[1] + spit + posArray[2];
colId = posArray[3];
} else if (posArray.length == 3) {
rowId = posArray[1];
colId = posArray[2];
} else {
try {
if (posArray.length == 3) {
rowId = Convert.toInt(proStr(posArray[1])) + "";
colId = Convert.toInt(posArray[2]) + "";
} else if (posArray.length == 4) {
rowId = Convert.toInt(proStr(posArray[1] + posArray[2])) + "";
colId = Convert.toInt(posArray[3]) + "";
}
}
} catch (Exception ex) {
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]);
// setRowID(posArray[posArray.length - 2]);
} catch (Exception ex2) {
log.error("解析位置的行列失败 " + posName + "," + ex2.toString());
} catch (Exception ex2) {
log.error("解析位置的行列失败 " + posName + "," + ex2.toString());
}
}
}
}
setRowID(proStr(rowId));
setColID(proStr(colId));
setRowID(rowId);
setColID(colId);
}
private String proStr(String input) {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!