Commit 473ecc61 LN

调试问题修改

1 个父辈 bb79dd0f
......@@ -23,6 +23,8 @@ import com.neotel.smfcore.core.storage.bean.InventoryItem;
import com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE;
import com.neotel.smfcore.core.storage.enums.COMPATIBLE_TYPE;
import com.neotel.smfcore.core.storage.enums.DeviceType;
import com.neotel.smfcore.core.storage.rest.dto.InventoryItemDto;
import com.neotel.smfcore.core.storage.rest.query.InventoryQueryCriteria;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.bean.OrderSetting;
import com.neotel.smfcore.core.system.service.dao.ICacheItemDao;
......@@ -38,6 +40,7 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
......@@ -47,6 +50,7 @@ import javax.annotation.PostConstruct;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
* 缓存
......@@ -658,6 +662,20 @@ public class DataCache {
return storageInventoryMap;
}
public List<InventoryItem> getInventoryByPN(String pn) {
Map<String, InventoryItem> inventoryItemMap = getAllInventory(null, "");
List<InventoryItem> list = Lists.newArrayList(inventoryItemMap.values());
List<InventoryItem> resultList = new ArrayList<>();
for (InventoryItem item : list
) {
if (item.getPartNumber().equals(pn)&&item.getStockCount()>0) {
resultList.add(item);
}
}
return resultList;
}
/**
* 手动修改数量的时候更新库存
* @param cid
......
......@@ -600,8 +600,7 @@ public class LiteOrderCache {
//剩余未出盘数
int remainReelCount = orderItem.getNeedReelCount() - orderItem.getTotalOutReelCount();
Collection<String> excludePosIds = excludeOutPosIds();
excludePosIds.addAll(findPosIds);
//此PN未完成
if (remainNum > 0 || remainReelCount > 0) {
if (outBom) {
......@@ -612,6 +611,8 @@ public class LiteOrderCache {
int assignNum = 0;
int assignReelCount = 0;
while (assignNum < remainNum || assignReelCount < remainReelCount) {
Collection<String> excludePosIds = excludeOutPosIds();
excludePosIds.addAll(findPosIds);
String partNumber = orderItem.getPn();
String reelId = orderItem.getRi();
String mpn = orderItem.getMpn();
......
......@@ -185,7 +185,7 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
@Override
public boolean deviceStatusChanges(String deviceStatusUrl, String[] cids, Integer[] statusList) {
log.info("deviceStatusChanges ,设备状态变化[" + JsonUtil.toJsonStr(cids) + "],[" + JsonUtil.toJsonStr(statusList) + "],通知TMS");
// UpdateStorageConnectionInfo(cids,statusList);
UpdateStorageConnectionInfo(cids,statusList);
RequestSyncRackStatusInfo(cids, statusList);
return true;
......@@ -225,8 +225,10 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
}
}
boolean needSendRack=false;
if(status==-1||status==0||status>=1){
if(status>=1){
needSendRack=false;
needSyncDataList.add(storage);
log.info("设备"+cid+"状态改变,当前状态:"+status+",需要通知韩华,并同步物料信息");
}else{
......@@ -241,24 +243,29 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
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);
if(needSendRack) {
//只有上线需要发送rack
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);
}
SyncRackStatusDatas.add(st);
}
}
//离线只发状态改变
//上线时只发状态改变,和reel同步,暂不发Rack
if (storageIds.size() > 0) {
tmsApis.RequestSyncRackStatusInfo(0, SyncRackStatusDatas);
}
......@@ -327,21 +334,24 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
status = bean.getStatus();
}
}
String conCode = TMS_Code.CODE_1020;
if (status <= 0) {
//初始化失败
conCode = TMS_Code.CODE_0002;
} else if (status == 1) {
conCode = TMS_Code.CODE_1020;
} else if (status <= 4) {
//报警
conCode = TMS_Code.CODE_1024;
} else if (status == 5) {
conCode = TMS_Code.CODE_1023;
} else {
//忙碌
conCode = TMS_Code.CODE_1010;
String conCode = "0";
// if (status <= 0) {
// //初始化失败
// conCode = TMS_Code.CODE_0002;
// } else if (status == 1) {
// conCode = TMS_Code.CODE_1020;
// } else if (status <= 4) {
// //报警
// conCode = TMS_Code.CODE_1024;
// } else if (status == 5) {
// conCode = TMS_Code.CODE_1023;
// } else {
// //忙碌
// conCode = TMS_Code.CODE_1010;
// }
if(status>=1){
conCode="2";
}
storageIds.add(storage.getCid());
storageTypes.add(type);
......
......@@ -18,7 +18,9 @@ import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.DateUtil;
import com.neotel.smfcore.common.utils.JsonUtil;
import com.neotel.smfcore.core.api.SmfApi;
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.bean.StatusBean;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.order.LiteOrderCache;
......@@ -26,6 +28,7 @@ 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;
......@@ -93,6 +96,9 @@ public class TMSCommunicator implements WsMsgReceivedListener {
@Autowired
private IDataLogManager dataLogManager;
@Autowired
private IComponentManager componentManager;
private static int gRequestID = 1000;
public static int GetRequestID()
{
......@@ -463,9 +469,10 @@ public class TMSCommunicator implements WsMsgReceivedListener {
//查找工单的所有任务
Criteria c = Criteria.where("sourceName").is(liteOrder.getOrderNo()).and("type").is(2);
List<DataLog> dataLogs = dataLogManager.findByQuery(new Query(c));
for (DataLog task :
dataLogs) {
boolean hasCancelTask=false;
boolean allCancel = true;
for (DataLog task :
dataLogs) {
// if(ObjectUtil.isNotEmpty(item.getPn())&&task.getPartNumber().equals(task.getPartNumber())){
//
// }else if(ObjectUtil.isNotEmpty(item.getRi())&&task.getBarcode().equals(task.getBarcode())){
......@@ -473,29 +480,40 @@ public class TMSCommunicator implements WsMsgReceivedListener {
// }else{
// 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(tmsParts.size(),task.getPartNumber(), task.getBarcode(), task.getNum(), task.getNum(), logCode, task.getCid(), task.getPosName());
tmsParts.add(part);
//是工单出库任务
if (task.isCheckOutTask() && task.getSourceName().equals(liteOrder.getOrderNo())) {
int responseNum = task.getNum();
String logCode = TMS_Code.CODE_2013;//默认已完成
if (task.isCancel()) {
hasCancelTask=true;
responseNum = 0;
logCode = TMS_Code.CODE_2012;//取消成功
} else if (task.isExecuting() || task.isWait()) {
logCode = TMS_Code.CODE_2011;//出库中
allCancel = false;
} else {
logCode = TMS_Code.CODE_2013;//已完成
allCancel = false;
}
TMSPart part = TMSPart.newBean(tmsParts.size(), task.getPartNumber(), task.getBarcode(), task.getNum(), responseNum, logCode, task.getCid(), task.getPosName());
tmsParts.add(part);
}
}
//有取消且有完成的返回2016.全部取消返回2012
if (liteOrder.isClosed()) {
if (tmsParts.size() > 0) {
//如果工单全部取消,需要发送2012
if (allCancel) {
tmsReserve.setResultCode(TMS_Code.CODE_2012);
} else if (hasCancelTask) {
//有取消任务返回2016
tmsReserve.setResultCode(TMS_Code.CODE_2016);
} else 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()) {
}else if (liteOrder.isOutOne() || liteOrder.isOutTails() || liteOrder.isOutOne()) {
tmsReserve.setResultCode(TMS_Code.CODE_2011);
}
......@@ -533,10 +551,10 @@ public class TMSCommunicator implements WsMsgReceivedListener {
String reelCode;
int count;
log.info("onMsgReceived: requestID=["+requestID+"],Topic=["+topic+"],message:["+message+"],");
switch (topic) {
case "RequestDeliveryOrder":
log.info("onMsgReceived: requestID=["+requestID+"],Topic=["+topic+"],message:["+message+"],");
partItems = getMapValue(msgMap, "PartNames");
partCounts = getMapValue(msgMap, "Counts");
towerLamp = (boolean) getMapValue(msgMap, "TowerLamp");
......@@ -544,16 +562,19 @@ public class TMSCommunicator implements WsMsgReceivedListener {
RequestDeliveryOrder(requestID, partItems, partCounts, towerLamp);
break;
case "RequestDeliveryOrderByLocation":
log.info("onMsgReceived: requestID=["+requestID+"],Topic=["+topic+"],message:["+message+"],");
List<TMSPos> Locations = getMapValue(msgMap, "Locations");
//3.10 RequestDeliveryOrderByLocation
RequestDeliveryOrderByLocation(requestID, Locations);
break;
case "RequestDeliveryOrderByReelCd":
log.info("onMsgReceived: requestID=["+requestID+"],Topic=["+topic+"],message:["+message+"],");
List<String> reelCds = getMapValue(msgMap, "ReelCds");
//3.12 RequestDeliveryOrderByReelCd
RequestDeliveryOrderByReelCd(requestID, reelCds);
break;
case "RequestUpdateDeliveryReserveState":
log.info("onMsgReceived: requestID=["+requestID+"],Topic=["+topic+"],message:["+message+"],");
List<String> reserveCodes = getMapValue(msgMap, "ReserveCodes");
List<Integer> resultCodes = getMapValue(msgMap, "ResultCodes");
//
......@@ -604,11 +625,13 @@ public class TMSCommunicator implements WsMsgReceivedListener {
// RequestPrintLabelDockingCart(requestID, dockingCartInfo);
// break;
case "NotifyLog":
// log.info("onMsgReceived: requestID=["+requestID+"],Topic=["+topic+"],message:["+message+"],");
break;
default:
// log.error("onMsgReceived:未找到对应的TOPIC: Topic=["+topic+"],requestID=["+requestID+"],message:["+message+"]");
// log.info("onMsgReceived: requestID=["+requestID+"],Topic=["+topic+"],message:["+message+"],");
log.debug("onMsgReceived:未找到对应的TOPIC: Topic=["+topic+"],requestID=["+requestID+"],message:["+message+"]");
// log.error("onMsgReceived:未找到对应的TOPIC: Topic=["+topic+"] ");
// log.debug("onMsgReceived:未找到对应的TOPIC: Topic=["+topic+"] ");
return;
}
}
......@@ -724,31 +747,58 @@ public class TMSCommunicator implements WsMsgReceivedListener {
try {
int curroNum = 0;
for (DataLog task :
dataLogs) {
if (task.isCheckOutTask() && task.getSourceName().equals(liteOrder.getOrderNo()) && task.getPartNumber().equals(item.getPn())) {
if (task.getSubSourceId().equals(item.getId())) {
int requestNum = task.getNum();
curroNum += task.getNum();
if (curroNum > item.getNeedNum()) {
requestNum = task.getNum() - (curroNum - item.getNeedNum());
try {
for (DataLog task :
dataLogs) {
if (ObjectUtil.isEmpty(task.getSourceName()) || ObjectUtil.isEmpty(task.getSubSourceId())) {
continue;
}
if (task.isCheckOutTask() && task.getSourceName().equals(liteOrder.getOrderNo()) && task.getPartNumber().equals(item.getPn())) {
if (task.getSubSourceId().equals(item.getId())) {
int requestNum = task.getNum();
curroNum += task.getNum();
if (curroNum > item.getNeedNum()) {
requestNum = task.getNum() - (curroNum - item.getNeedNum());
}
TMSPart p = TMSPart.newBean(parts.size(), task.getPartNumber(), task.getBarcode(), requestNum, task.getNum(), TMS_Code.CODE_2010, task.getCid(), task.getPosName());
log.info("RequestDeliveryOrder pn=" + task.getPartNumber() + ",出库成功:code=" + TMS_Code.CODE_2010 + ",posName=" + task.getPosName() + ",barcode=" + task.getBarcode());
parts.add(p);
}
TMSPart p = TMSPart.newBean(parts.size(), task.getPartNumber(), task.getBarcode(), requestNum, task.getNum(), TMS_Code.CODE_2010, task.getCid(), task.getPosName());
log.info("RequestDeliveryOrder pn=" + task.getPartNumber() + ",出库成功:code=" + TMS_Code.CODE_2010 + ",posName=" + task.getPosName() + ",barcode=" + task.getBarcode());
parts.add(p);
}
}
} catch (Exception ex) {
log.error(" RequestDeliveryOrder 查找 " + item.getPn() + "的出库任务出错:error::", ex.toString());
}
if (curroNum <= 0) {
//如果缺料返回2002,否则还是返回2010
String shortValue = item.getAppend("shortage");
if (ObjectUtil.isEmpty(shortValue)) {
shortValue = "";
}
if (ObjectUtil.isNotEmpty(shortValue) && shortValue.equals("true")) {
//未出库
TMSPart p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2002, "", "");
log.info("RequestDeliveryOrder pn=" + item.getPn() + ",出库失败缺料:code=" + TMS_Code.CODE_2002);
//查找库存中是否有此物料,如果数量不足返回2003,否则返回2002
List<InventoryItem> itmes = dataCache.getInventoryByPN(item.getPn());
TMSPart p;
if (itmes.size() > 0) {
//如果是有库存但是库存不足,发送2003
p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2001, "", "");
log.info("RequestDeliveryOrder pn=" + item.getPn() + ",出库失败缺料,库存不足:code=" + TMS_Code.CODE_2001);
} else {
//判断pn是否存在,存在返回2002,否则返回2003
Component component=componentManager.findOneByPN(item.getPn());
if(component==null){
//pn不存在,返回2003
p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2003, "", "");
log.info("RequestDeliveryOrder pn=" + item.getPn() + ",出库失败缺料,PN不存在:code=" + TMS_Code.CODE_2003);
}else {
//库存无此物料,发送2002
p = TMSPart.newBean(parts.size(), 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(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2010, "", "");
......@@ -759,7 +809,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
}
} catch (Exception ex) {
log.error(" RequestDeliveryOrder " + item.getPn() + ",error:" + ex.toString());
log.error(" RequestDeliveryOrder " + item.getPn() + ",error::", ex.toString());
}
}
......
......@@ -78,7 +78,7 @@ public class TMS_Code {
public static final String CODE_1024 = "1024";
/**
* 2001 Part not enough
* 2001 Part not enough 数量不足
*/
public static final String CODE_2001 = "2001";
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!