Commit db2e662c LN

韩华接口修改

1 个父辈 eb3a560b
......@@ -730,6 +730,19 @@ public class LiteOrderCache {
}
}
}
List<StoragePos> lockPosList = storagePosManager.findLockPos(liteOrder.getOrderNo());
//缓存清除锁定 TODO
if(lockPosList!=null){
for (StoragePos pos :
lockPosList) {
Storage storage=dataCache.getStorageById(pos.getStorageId());
dataCache.unLockOneReel(storage.getCid(),pos.getBarcode().getPartNumber());
}
}
//绑定料需要解绑
storagePosManager.clearLockPos(liteOrder.getOrderNo());
......@@ -922,7 +935,7 @@ public class LiteOrderCache {
} else if (Strings.isNullOrEmpty(reelId) && Strings.isNullOrEmpty(partNumber) && !Strings.isNullOrEmpty(mpn)){
pos=storagePosManager.findMpnInStorages(availableStorageIds, mpn, excludePosIds, checkoutType,orderItem.getAppendData());
}
if (pos == null) {
if (pos != null) {
// //锁定物料
assignNum = assignNum + pos.getBarcode().getAmount();
assignReelCount = assignReelCount + 1;
......@@ -934,6 +947,10 @@ public class LiteOrderCache {
pos.setBarcode(barcode);
storagePosManager.save(pos);
//增加物料锁定
Storage storage=dataCache.getStorageById(pos.getStorageId());
dataCache.lockOneReel(storage.getCid(),pos.getBarcode().getPartNumber());
}
//如果是RI出库,只有一盘,出完就结束
if(!Strings.isNullOrEmpty(reelId)){
......
......@@ -507,10 +507,22 @@ public class StorageController {
Integer width =0;
String labelName="";
Integer posType=0;
String column = lineValues[columnIndex]; //lie
String magazine = lineValues[magazineIndex]; //模组
String layer = lineValues[layerIndex]; //层
String slot = lineValues[slotIndex]; //槽位
String column = "";
String magazine="";
String layer="";
String slot="";
if(columnIndex>=0){
column=lineValues[columnIndex]; //lie
}
if(magazineIndex>=0) {
magazine = lineValues[magazineIndex]; //模组
}
if(layerIndex>=0) {
layer = lineValues[layerIndex]; //层
}
if(slotIndex>=0) {
slot = lineValues[slotIndex]; //槽位
}
try {
priority =Integer.parseInt(lineValues[priIndex]) ;
height = Integer.parseInt(lineValues[hIndex]);
......
......@@ -139,7 +139,11 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
log.info("barcode[" + params.getCode() + "] RequestGetPartInfo ,PN=[" + pn + "],code=[" + code + "],count=[" + count + "]新增条码准备入库");
return barcode;
}
return null;
else{
log.info("barcode[" + params.getCode() + "] 解析条码到完整条码:"+fullCode+",调用 RequestGetPartInfo 未收到反馈");
throw new ValidateException("smfcore.mesApi.inCheck.error", "RequestGetPartInfo no data");
}
// return null;
}
private Date getDate(String str) {
......@@ -154,7 +158,7 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
@Override
public Barcode canPutInAfterResolve(String inCheckUrl, CodeValidateParam params, Barcode barcode) throws ValidateException {
log.info("barcode[" + barcode.getBarcode() + "] 准备入库,调用 RequestGetPartInfo");
log.info("barcode[" + barcode.getBarcode() + "] 准备入库, 直接返回");
// List<TMSPart> result = tmsApis.RequestGetPartInfo(0, barcode.getFullCode());
// if (result.size() > 0) {
// String pn = result.get(0).getPartName();
......
......@@ -465,7 +465,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
List<String> rackList;
List<TMSPos> Locations;
List<String> reelCds;
boolean towerLamp;
boolean towerLamp = false;
String registerID;
String reelCode;
int count;
......@@ -473,32 +473,32 @@ public class TMSCommunicator implements WsMsgReceivedListener {
switch (topic) {
case "RequestDeliveryOrder":
log.info("onMsgReceived: requestID=["+requestID+"],Topic=["+topic+"],message:["+message+"],");
log.info("onMsgReceived: requestID=[" + requestID + "],Topic=[" + topic + "],message:[" + message + "],");
partItems = getMapValue(msgMap, "PartNames");
partCounts = getMapValue(msgMap, "Counts");
towerLamp = (boolean) getMapValue(msgMap, "TowerLamp");
rackList= getMapValue(msgMap,"RackList");
if(rackList==null){
rackList=new ArrayList<>();
rackList = getMapValue(msgMap, "RackList");
if (rackList == null) {
rackList = new ArrayList<>();
}
//3.8 RequestDeliveryOrder
RequestDeliveryOrder(requestID, partItems, partCounts, towerLamp,rackList);
RequestDeliveryOrder(requestID, partItems, partCounts, towerLamp, rackList);
break;
case "RequestDeliveryOrderByLocation":
log.info("onMsgReceived: requestID=["+requestID+"],Topic=["+topic+"],message:["+message+"],");
log.info("onMsgReceived: requestID=[" + requestID + "],Topic=[" + topic + "],message:[" + message + "],");
Locations = getMapValue(msgMap, "Locations");
//3.10 RequestDeliveryOrderByLocation
RequestDeliveryOrderByLocation(requestID, Locations);
break;
case "RequestDeliveryOrderByReelCd":
log.info("onMsgReceived: requestID=["+requestID+"],Topic=["+topic+"],message:["+message+"],");
log.info("onMsgReceived: requestID=[" + requestID + "],Topic=[" + topic + "],message:[" + message + "],");
reelCds = getMapValue(msgMap, "ReelCds");
rackList= getMapValue(msgMap,"RackList");
rackList = getMapValue(msgMap, "RackList");
//3.12 RequestDeliveryOrderByReelCd
RequestDeliveryOrderByReelCd(requestID, reelCds,rackList);
RequestDeliveryOrderByReelCd(requestID, reelCds, rackList);
break;
case "RequestUpdateDeliveryReserveState":
log.info("onMsgReceived: requestID=["+requestID+"],Topic=["+topic+"],message:["+message+"],");
log.info("onMsgReceived: requestID=[" + requestID + "],Topic=[" + topic + "],message:[" + message + "],");
List<String> reserveCodes = getMapValue(msgMap, "ReserveCodes");
List<Integer> resultCodes = getMapValue(msgMap, "ResultCodes");
//
......@@ -506,31 +506,35 @@ public class TMSCommunicator implements WsMsgReceivedListener {
RequestUpdateDeliveryReserveState(requestID, reserveCodes, resultCodes);
break;
case "RequestDeliveryReserve":
log.info("onMsgReceived: requestID=[" + requestID + "],Topic=[" + topic + "],message:[" + message + "],");
// 2024-12-10 10:49:05.223 ERROR [TMSCommunicator.java:585] - 处理消息出错:message=
// [{"PartNames":["EP16-000689B"],"Counts":[5000],"RackList":[],"Topic":"RequestDeliveryReserve","id":4,"uid":463433}],error:java.lang.NullPointerException
partItems = getMapValue(msgMap, "PartNames");
partCounts = getMapValue(msgMap, "Counts");
towerLamp = (boolean) getMapValue(msgMap, "TowerLamp");
rackList= getMapValue(msgMap,"RackList");
if(rackList==null){
rackList=new ArrayList<>();
// towerLamp = (boolean) getMapValue(msgMap, "TowerLamp");
rackList = getMapValue(msgMap, "RackList");
if (rackList == null) {
rackList = new ArrayList<>();
}
//3.14 RequestDeliveryReserve
RequestDeliveryReserve(requestID, partItems, partCounts,towerLamp,rackList);
RequestDeliveryReserve(requestID, partItems, partCounts, towerLamp, rackList);
break;
case "RequestDeliveryReserveByLocation":
log.info("onMsgReceived: requestID=["+requestID+"],Topic=["+topic+"],message:["+message+"],");
log.info("onMsgReceived: requestID=[" + requestID + "],Topic=[" + topic + "],message:[" + message + "],");
Locations = getMapValue(msgMap, "Locations");
// 3.16 ,RequestDeliveryReserveByLocation
RequestDeliveryReserveByLocation(requestID, Locations);
break;
case "RequestDeliveryReserveByReelCd":
log.info("onMsgReceived: requestID=["+requestID+"],Topic=["+topic+"],message:["+message+"],");
log.info("onMsgReceived: requestID=[" + requestID + "],Topic=[" + topic + "],message:[" + message + "],");
reelCds = getMapValue(msgMap, "ReelCds");
rackList= getMapValue(msgMap,"RackList");
rackList = getMapValue(msgMap, "RackList");
//3.18 RequestDeliveryOrderByReelCd
RequestDeliveryReserveByReelCd(requestID, reelCds,rackList);
RequestDeliveryReserveByReelCd(requestID, reelCds, rackList);
break;
// case "RequestResultOfDeliveryReserve":
......@@ -575,7 +579,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
break;
default:
// log.info("onMsgReceived: requestID=["+requestID+"],Topic=["+topic+"],message:["+message+"],");
log.debug("onMsgReceived:未找到对应的TOPIC: Topic=["+topic+"],requestID=["+requestID+"],message:["+message+"]");
// log.info("onMsgReceived:未找到对应的TOPIC: Topic=[" + topic + "],requestID=[" + requestID + "],message:[" + message + "]");
// log.debug("onMsgReceived:未找到对应的TOPIC: Topic=["+topic+"] ");
return;
......@@ -902,6 +906,8 @@ public class TMSCommunicator implements WsMsgReceivedListener {
String responseCmd = "ResponseDeliveryReserve";
try {
//成功返回2010
//2001:, 2002: ,2003:
if (partItem == null || partCount == null || partItem.size() <= 0 || partCount.size() <= 0) {
log.info(requestCmd + " 数据不完整,直接返回");
......@@ -911,6 +917,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
String soName = "DO" + DateUtil.toDateString(new Date(), "yyyyMMddHHmmss");
List<LiteOrderItem> liteOrderItems = tmsUtil.partToItems(partItem, partCount);
//锁定物料可以有执行中的工单
LiteOrder liteOrder = tmsUtil.createOrder(responseCmd, requestID, liteOrderItems, soName, false, rackList);
if (liteOrder == null) {
......@@ -919,7 +926,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
ResponseDeliveryReserve(responseCmd, requestID, parts, "", "");
} else {
liteOrder = liteOrderCache.getLiteOrder(liteOrder.getOrderNo());
liteOrder = liteOrderCache.getLiteOrder(liteOrder.getOrderNo());
if (liteOrder != null) {
List<TMSPart> parts =tmsUtil.GetReserveList(requestCmd,liteOrder);
......
......@@ -3,13 +3,16 @@ package com.neotel.smfcore.custom.hanwha.handler;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.core.barcode.service.manager.IComponentManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.barcode.service.po.Component;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.order.LiteOrderCache;
import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS;
import com.neotel.smfcore.core.order.service.manager.ILiteOrderManager;
import com.neotel.smfcore.core.order.service.po.LiteOrder;
import com.neotel.smfcore.core.order.service.po.LiteOrderItem;
import com.neotel.smfcore.core.storage.bean.InventoryItem;
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;
......@@ -47,6 +50,8 @@ public class TMSUtil {
private DataCache dataCache;
@Autowired
private TaskService taskService;
@Autowired
private IComponentManager componentManager;
public TMSReserve GetOrderInfo(LiteOrder liteOrder) {
......@@ -128,12 +133,25 @@ public class TMSUtil {
if (rackList == null) {
rackList = new ArrayList<>();
}
//判断是否有已执行的工单,有的话创建失败
Query query = new Query(Criteria.where("status").ne(LITEORDER_STATUS.CLOSED));
List<LiteOrder> orderList = liteOrderManager.findByQuery(query);
if (orderList.size() > 0) {
log.info(requestCmd + ": 当前有未关闭的工单" + orderList.size() + ",创建工单失败");
return null;
if(autoOut){
//判断是否有已执行的工单,有的话创建失败
Query query = new Query(Criteria.where("status").ne(LITEORDER_STATUS.CLOSED).ne(LITEORDER_STATUS.NEW));
List<LiteOrder> orderList = liteOrderManager.findByQuery(query);
List<LiteOrder> orders=new ArrayList<>();
for (LiteOrder order:orderList
) {
if (order.isNew()) {
continue;
}
orders.add(order);
}
if (orders.size() > 0) {
log.info(requestCmd + ": 当前有未关闭的工单" + orderList.size() + ",创建工单失败");
return null;
}
}else{
}
LiteOrder liteOrder = new LiteOrder(orderNo, items);
......@@ -164,8 +182,6 @@ public class TMSUtil {
//先锁定物料
liteOrderCache.LiteOrderLockReel(liteOrder.getOrderNo(), false, false, true, rackList);
}
return liteOrder;
}
......@@ -197,6 +213,44 @@ public class TMSUtil {
}
}
if (curroNum <= 0) {
//预留失败
List<InventoryItem> items = dataCache.getInventoryByPN(item.getPn());
TMSPart p;
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);
}
} catch (Exception ex) {
log.error(requestCmd + " " + item.getPn() + ",error::", ex.toString());
}
......
......@@ -84,11 +84,13 @@ public class TMS_Code {
/**
* 2002 Out of part 无材料
* 从来没有的PN
*/
public static final String CODE_2002 = "2002";
/**
* 2003 Registered part but not on the rack 缺料
* 有PN,但是当前无库存
*/
public static final String CODE_2003 = "2003";
......
......@@ -25,11 +25,12 @@ public class TMSPart extends TMSPos implements Serializable {
private String resultCode = "";
//生产日期
public String ProductionDate ="";
//过期日期
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 ) {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!