Commit dcc32d1c LN

1.设备上线时需要同步reel到韩华。

2.工单详情相同PN会有重复数据。
3.韩华RequestDeliveryOrder同时只执行一个工单,如有未关闭的返回2014。
4.
1 个父辈 1f4db1e4
...@@ -871,8 +871,11 @@ public class BaseDeviceHandler implements IDeviceHandler { ...@@ -871,8 +871,11 @@ public class BaseDeviceHandler implements IDeviceHandler {
//状态变化 //状态变化
if(statusBean.getStatus()!=preStatus){ if(statusBean.getStatus()!=preStatus){
//如果是从离线到上线,或者从上线到离线才通知
if(preStatus==-1||preStatus==0){
smfApi.deviceStatusChanges(new String[]{statusBean.getCid()},new Integer[]{statusBean.getStatus()}); smfApi.deviceStatusChanges(new String[]{statusBean.getCid()},new Integer[]{statusBean.getStatus()});
} }
}
// //判断是否刚刚上线 // //判断是否刚刚上线
// StatusBean bean = DevicesStatusUtil.getStatusBean(statusBean.getCid()); // StatusBean bean = DevicesStatusUtil.getStatusBean(statusBean.getCid());
......
...@@ -587,7 +587,8 @@ public class LiteOrderCache { ...@@ -587,7 +587,8 @@ public class LiteOrderCache {
List<String> availableStorageIds = dataCache.getAvailableStorageIds(); List<String> availableStorageIds = dataCache.getAvailableStorageIds();
CHECKOUT_TYPE checkoutType = dataCache.getCheckOutType(); CHECKOUT_TYPE checkoutType = dataCache.getCheckOutType();
log.info("工单[" + orderNo + "]出库前需要进行缺料检查"); log.info("工单[" + orderNo + "]出库前需要进行缺料检查"); //需要过滤掉刚刚查找到的库位号
List<String> findPosIds=new ArrayList<>();
//其他出库模式一次性全部生成任务 //其他出库模式一次性全部生成任务
List<LiteOrderItem> newItems = new ArrayList<>(); List<LiteOrderItem> newItems = new ArrayList<>();
for (LiteOrderItem orderItem : cacheOrder.getOrderItems()) { for (LiteOrderItem orderItem : cacheOrder.getOrderItems()) {
...@@ -600,6 +601,7 @@ public class LiteOrderCache { ...@@ -600,6 +601,7 @@ public class LiteOrderCache {
int remainReelCount = orderItem.getNeedReelCount() - orderItem.getTotalOutReelCount(); int remainReelCount = orderItem.getNeedReelCount() - orderItem.getTotalOutReelCount();
Collection<String> excludePosIds = excludeOutPosIds(); Collection<String> excludePosIds = excludeOutPosIds();
excludePosIds.addAll(findPosIds);
//此PN未完成 //此PN未完成
if (remainNum > 0 || remainReelCount > 0) { if (remainNum > 0 || remainReelCount > 0) {
if (outBom) { if (outBom) {
...@@ -640,9 +642,10 @@ public class LiteOrderCache { ...@@ -640,9 +642,10 @@ public class LiteOrderCache {
liteOrderItemManager.save(orderItem); liteOrderItemManager.save(orderItem);
break; break;
} else { } else {
findPosIds.add(pos.getId());
assignNum = assignNum + pos.getBarcode().getAmount(); assignNum = assignNum + pos.getBarcode().getAmount();
assignReelCount = assignReelCount + 1; assignReelCount = assignReelCount + 1;
excludePosIds.add(pos.getPosName()); // excludePosIds.add(pos.getId());
} }
} }
} }
......
...@@ -188,7 +188,7 @@ public class DevicesStatusUtil { ...@@ -188,7 +188,7 @@ public class DevicesStatusUtil {
if (oldMsgs != null) { if (oldMsgs != null) {
for (MsgInfo old : for (MsgInfo old :
oldMsgs) { oldMsgs) {
if (old.getMsgKey().equals(msg.getMsgKey()) && old.getMsg().equals(msg.getMsg())) { if (ObjectUtil.isNotEmpty(old.getMsgKey())&&ObjectUtil.isNotEmpty(msg.getMsgKey())&& old.getMsgKey().equals(msg.getMsgKey()) && old.getMsg().equals(msg.getMsg())) {
newMsg = false; newMsg = false;
break; break;
} }
......
...@@ -200,6 +200,7 @@ public class HanwhaApiHandler extends BaseSmfApiListener { ...@@ -200,6 +200,7 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
List<TMSRackStatus> SyncRackStatusDatas = new ArrayList<>(); List<TMSRackStatus> SyncRackStatusDatas = new ArrayList<>();
List<String> storageIds = new ArrayList<>(); List<String> storageIds = new ArrayList<>();
List<Storage> needSyncDataList=new ArrayList<>();
int i = 0; int i = 0;
for (String cid : cids) { for (String cid : cids) {
...@@ -224,6 +225,18 @@ public class HanwhaApiHandler extends BaseSmfApiListener { ...@@ -224,6 +225,18 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
} }
} }
if(status==-1||status==0||status>=1){
if(status>=1){
needSyncDataList.add(storage);
log.info("设备"+cid+"状态改变,当前状态:"+status+",需要通知韩华,并同步物料信息");
}else{
log.info("设备"+cid+"状态改变,当前状态:"+status+",需要通知韩华");
}
}else {
continue;
}
int flag = 0; int flag = 0;
if (status >= 1) { if (status >= 1) {
flag = 2; flag = 2;
...@@ -249,8 +262,40 @@ public class HanwhaApiHandler extends BaseSmfApiListener { ...@@ -249,8 +262,40 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
if (storageIds.size() > 0) { if (storageIds.size() > 0) {
tmsApis.RequestSyncRackStatusInfo(0, SyncRackStatusDatas); tmsApis.RequestSyncRackStatusInfo(0, SyncRackStatusDatas);
} }
if(needSyncDataList.size()>0){
for (Storage st :
needSyncDataList) {
SyncStorageData(st, "单个设备上线");
}
}
}
private void SyncStorageData(Storage storage,String logName) {
List<TMSPartReelPos> list = new ArrayList<>();
List<StoragePos> allPos = storagePosManager.findByStorage(storage.getId());
// if (storage.isNLShelf() || storage.isMimoG2() ||storage.isBatchStorage()) {
if (allPos != null) {
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);
}
} }
List<TMSPart> result = tmsApis.RequestSyncPartReelPosInfo(0, list);
log.info(logName+ "RequestSyncPartReelPosInfo storageCID=" + storage.getCid() + ", count=" + list.size());
}
}
public void UpdateStorageConnectionInfo(String[] cids, Integer[] statusList) { public void UpdateStorageConnectionInfo(String[] cids, Integer[] statusList) {
if (!TMSCommunicator.isEnable()) { if (!TMSCommunicator.isEnable()) {
return; return;
......
...@@ -19,6 +19,7 @@ import com.neotel.smfcore.core.barcode.service.po.Barcode; ...@@ -19,6 +19,7 @@ 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.device.util.DataCache; import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.order.LiteOrderCache; 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.manager.ILiteOrderManager;
import com.neotel.smfcore.core.order.service.po.LiteOrder; import com.neotel.smfcore.core.order.service.po.LiteOrder;
import com.neotel.smfcore.core.order.service.po.LiteOrderItem; import com.neotel.smfcore.core.order.service.po.LiteOrderItem;
...@@ -592,6 +593,15 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -592,6 +593,15 @@ public class TMSCommunicator implements WsMsgReceivedListener {
if (items.size() <= 0) { if (items.size() <= 0) {
return null; return null;
} }
//判断是否有已执行的工单,有的话创建失败
Query query =new Query(Criteria.where("status").ne(LITEORDER_STATUS.CLOSED));
List<LiteOrder> orderList = liteOrderManager.findByQuery(query);
if(orderList.size()>0){
log.info("RequestDelivery: 当前有未关闭的工单"+orderList.size()+",创建工单失败");
return null;
}
LiteOrder liteOrder = new LiteOrder(orderNo, items); LiteOrder liteOrder = new LiteOrder(orderNo, items);
liteOrder.setSource("DeliveryOrder"); liteOrder.setSource("DeliveryOrder");
LiteOrder dbOrder = liteOrderManager.findByOrderNo(liteOrder.getOrderNo()); LiteOrder dbOrder = liteOrderManager.findByOrderNo(liteOrder.getOrderNo());
...@@ -628,7 +638,7 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -628,7 +638,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
* @param partCount * @param partCount
* @param towerLamp * @param towerLamp
*/ */
private void RequestDeliveryOrder(int requestID, List<String> partItem, List<Integer> partCount, boolean towerLamp) { private synchronized void RequestDeliveryOrder(int requestID, List<String> partItem, List<Integer> partCount, boolean towerLamp) {
// 3.9 ResponseDeliveryOrder // 3.9 ResponseDeliveryOrder
TMSReserve tmsReserve=null; TMSReserve tmsReserve=null;
...@@ -636,7 +646,7 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -636,7 +646,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
if (partItem == null || partCount == null || partItem.size() <= 0 || partCount.size() <= 0) { if (partItem == null || partCount == null || partItem.size() <= 0 || partCount.size() <= 0) {
log.info("RequestDeliveryOrder 数据不完整,直接返回"); log.info("RequestDeliveryOrder 数据不完整,直接返回");
ResponseDeliveryOrder(requestID, new ArrayList<>(), ""); ResponseDeliveryOrder(requestID, new ArrayList<>(), "","");
return; return;
} }
String soName = "DO" + DateUtil.toDateString(new Date(), "yyyyMMddHHmmss"); String soName = "DO" + DateUtil.toDateString(new Date(), "yyyyMMddHHmmss");
...@@ -655,6 +665,16 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -655,6 +665,16 @@ public class TMSCommunicator implements WsMsgReceivedListener {
} }
LiteOrder liteOrder = createOrder(requestID, liteOrderItems, soName, true); LiteOrder liteOrder = createOrder(requestID, liteOrderItems, soName, true);
if(liteOrder==null){
//同时只能有一个工单执行,创建工单时不能有未关闭的工单。返回2014
List<TMSPart> parts = new ArrayList<>();
for (LiteOrderItem item :
liteOrderItems) {
TMSPart p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), 0, TMS_Code.CODE_2014, "", "");
parts.add(p);
}
ResponseDeliveryOrder(requestID, parts, "","");
}else {
//能够出库成功返回2010,库存不足范围2002 Out Of Part //能够出库成功返回2010,库存不足范围2002 Out Of Part
liteOrder = liteOrderCache.getLiteOrder(liteOrder.getOrderNo()); liteOrder = liteOrderCache.getLiteOrder(liteOrder.getOrderNo());
if (liteOrder != null) { if (liteOrder != null) {
...@@ -669,6 +689,7 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -669,6 +689,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
for (DataLog task : for (DataLog task :
dataLogs) { dataLogs) {
if (task.isCheckOutTask() && task.getSourceName().equals(liteOrder.getOrderNo()) && task.getPartNumber().equals(item.getPn())) { if (task.isCheckOutTask() && task.getSourceName().equals(liteOrder.getOrderNo()) && task.getPartNumber().equals(item.getPn())) {
if (task.getSubSourceId().equals(item.getId())) {
int requestNum = task.getNum(); int requestNum = task.getNum();
curroNum += task.getNum(); curroNum += task.getNum();
if (curroNum > item.getNeedNum()) { if (curroNum > item.getNeedNum()) {
...@@ -679,6 +700,7 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -679,6 +700,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
parts.add(p); parts.add(p);
} }
} }
}
if (curroNum <= 0) { if (curroNum <= 0) {
...@@ -706,26 +728,25 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -706,26 +728,25 @@ public class TMSCommunicator implements WsMsgReceivedListener {
// TMSPart part = TMSPart.newBean("PN1", "Barcode1", 999, 999, TMS_Code.CODE_2002, "", ""); // TMSPart part = TMSPart.newBean("PN1", "Barcode1", 999, 999, TMS_Code.CODE_2002, "", "");
// parts.add(part); // parts.add(part);
ResponseDeliveryOrder(requestID, parts, liteOrder.getOrderNo()); ResponseDeliveryOrder(requestID, parts, liteOrder.getOrderNo(),"");
//如果工单执行中,发送ResponseUpdateDeliveryReserveState,否则不需要 //如果工单执行中,发送ResponseUpdateDeliveryReserveState,否则不需要
if(liteOrder.isClosed()){ if (liteOrder.isClosed()) {
log.info("RequestDeliveryOrder 工单已关闭,不需要发送 发送ResponseUpdateDeliveryReserveState"); log.info("RequestDeliveryOrder 工单已关闭,不需要发送 发送ResponseUpdateDeliveryReserveState");
}else{ } else {
tmsReserve=GetOrderInfo(liteOrder); tmsReserve = GetOrderInfo(liteOrder);
List<TMSReserve> tmsReserves=new ArrayList<>(); List<TMSReserve> tmsReserves = new ArrayList<>();
tmsReserves.add(tmsReserve); tmsReserves.add(tmsReserve);
ResponseUpdateDeliveryReserveState(requestID,tmsReserves,0); ResponseUpdateDeliveryReserveState(requestID, tmsReserves, 0);
}
} }
} }
} catch (Exception exception) { } catch (Exception exception) {
log.error("RequestDeliveryOrder error:" + exception.toString()); log.error("RequestDeliveryOrder error:" + exception.toString());
} }
ResponseDeliveryOrder(requestID, new ArrayList<>(), ""); ResponseDeliveryOrder(requestID, new ArrayList<>(), "","");
} }
/** /**
...@@ -998,7 +1019,7 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -998,7 +1019,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
* @param Parts * @param Parts
* @param OrderCode * @param OrderCode
*/ */
public void ResponseDeliveryOrder(int requestID, List<TMSPart> Parts, String OrderCode) { public void ResponseDeliveryOrder(int requestID, List<TMSPart> Parts, String OrderCode,String ReserveCode) {
Map<String, Object> dataMap = new HashMap<>(); Map<String, Object> dataMap = new HashMap<>();
dataMap.put("Topic", "ResponseDeliveryOrder"); dataMap.put("Topic", "ResponseDeliveryOrder");
dataMap.put("RequestID", requestID); dataMap.put("RequestID", requestID);
...@@ -1014,9 +1035,13 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -1014,9 +1035,13 @@ public class TMSCommunicator implements WsMsgReceivedListener {
arrayList.add(Part.getJson()); arrayList.add(Part.getJson());
} }
if(ObjectUtil.isEmpty(ReserveCode)){
ReserveCode= OrderCode;
}
dataMap.put("PartList", arrayList); dataMap.put("PartList", arrayList);
dataMap.put("OrderCode", OrderCode); dataMap.put("OrderCode", OrderCode);
dataMap.put("ReserveCode", OrderCode); dataMap.put("ReserveCode", ReserveCode);
SendData(dataMap); SendData(dataMap);
} }
...@@ -1080,6 +1105,8 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -1080,6 +1105,8 @@ 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.getResultCode()); 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<>();
......
...@@ -83,12 +83,12 @@ public class TMS_Code { ...@@ -83,12 +83,12 @@ public class TMS_Code {
public static final String CODE_2001 = "2001"; public static final String CODE_2001 = "2001";
/** /**
* 2002 Out of part * 2002 Out of part 无材料
*/ */
public static final String CODE_2002 = "2002"; public static final String CODE_2002 = "2002";
/** /**
* 2003 Registered part but not on the rack * 2003 Registered part but not on the rack 缺料
*/ */
public static final String CODE_2003 = "2003"; public static final String CODE_2003 = "2003";
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!