Commit ad48245f LN

API002问题修改

1 个父辈 ee164710
...@@ -9,16 +9,19 @@ public class INITEM_STATUS { ...@@ -9,16 +9,19 @@ public class INITEM_STATUS {
public static int PutIn=1; public static int PutIn=1;
/**入库完成*/ /**入库完成*/
public static int PutEnd=1; public static int PutEnd=2;
//入库取消
public static int Cancel=3;
/**XRay点料*/ /**XRay点料*/
public static int XRay=2; public static int XRay=4;
/**XRay点料结果提交失败*/ /**XRay点料结果提交失败*/
public static int XRayFail=3; public static int XRayFail=5;
/**入库正常完成*/ /**入库正常完成*/
public static int Success=4; public static int Success=6;
/**入库通知失败*/ /**入库通知失败*/
public static int Fail=5; public static int Fail=7;
} }
...@@ -77,6 +77,11 @@ public class InListItem extends BasePo implements Serializable { ...@@ -77,6 +77,11 @@ public class InListItem extends BasePo implements Serializable {
private String rfid; private String rfid;
/** /**
* rfid已入库完成。
*/
private boolean rfidEnd=false;
/**
* 入库的库位号 * 入库的库位号
*/ */
private String posName; private String posName;
...@@ -87,6 +92,10 @@ public class InListItem extends BasePo implements Serializable { ...@@ -87,6 +92,10 @@ public class InListItem extends BasePo implements Serializable {
*/ */
private int state= INITEM_STATUS.Wait; private int state= INITEM_STATUS.Wait;
public boolean isEnd() {
return state == INITEM_STATUS.Success || state == INITEM_STATUS.Cancel;
}
public boolean isSuccess(){ public boolean isSuccess(){
return state==INITEM_STATUS.Success||state==INITEM_STATUS.PutIn||state==INITEM_STATUS.PutEnd; return state==INITEM_STATUS.Success||state==INITEM_STATUS.PutIn||state==INITEM_STATUS.PutEnd;
......
...@@ -132,7 +132,7 @@ public class MicronApi { ...@@ -132,7 +132,7 @@ public class MicronApi {
Integer mamQty = result.getResult("mamQty"); Integer mamQty = result.getResult("mamQty");
String oldBarcode = barcode.getBarcode(); String oldBarcode = barcode.getBarcode();
log.info("API001 ,barcode=" + barcode.getBarcode() + ",返回结果:partNumber=" + partNumber + ", serialNum=" + partNumber + ", xrayReq=" + xrayReq + ", Qty=" + mamQty); log.info("API001 ,barcode=" + barcode.getBarcode() + ",返回结果:partNumber=" + partNumber + ", serialNum=" + serialNumber + ", xrayReq=" + xrayReq + ", Qty=" + mamQty);
boolean needSave = false; boolean needSave = false;
...@@ -177,7 +177,9 @@ public class MicronApi { ...@@ -177,7 +177,9 @@ public class MicronApi {
} }
public static Map<String,Boolean> API002(String jobId, String operationId, List<StoragePos> storagePos) { public static Map<String,Boolean> API002(String rfid, String operationId, List<StoragePos> storagePos) {
String jobId=operationId+"_"+rfid;
String url = config.getUrl(config.api_name_002); String url = config.getUrl(config.api_name_002);
...@@ -401,10 +403,11 @@ public class MicronApi { ...@@ -401,10 +403,11 @@ public class MicronApi {
} }
public static boolean Api007(String operationId, String jobId, List<DataLog> dataLogList) { public static boolean Api007(String operationId, String rfid, List<DataLog> dataLogList) {
String url = config.getUrl(config.api_name_007); String url = config.getUrl(config.api_name_007);
try { try {
String jobId=operationId+"_"+rfid;
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
paramMap.put("jobId", jobId); paramMap.put("jobId", jobId);
paramMap.put("operationId", operationId); paramMap.put("operationId", operationId);
......
...@@ -18,7 +18,13 @@ public class MicronApiListener extends BaseSmfApiListener { ...@@ -18,7 +18,13 @@ public class MicronApiListener extends BaseSmfApiListener {
@Override @Override
public void inTaskStatusChange(String inNotifyUrl, DataLog task){ public void inTaskStatusChange(String inNotifyUrl, DataLog task){
loadingUtil.puEndUpdateTime(task.getBarcode(),task.getPosName()); if(task.isPutInTask()){
if(task.isFinished()){
loadingUtil.putEndUpdate(task);
}else if(task.isCancel()){
loadingUtil.putEndUpdate(task);
}
}
} }
} }
...@@ -403,6 +403,16 @@ public class MicronDeviceController { ...@@ -403,6 +403,16 @@ public class MicronDeviceController {
return ResultBean.newOkResult(""); return ResultBean.newOkResult("");
} }
@ApiOperation("RFID出库满离开时调用")
@PostMapping(value = "/rfidOutEnd")
@ResponseBody
@AnonymousAccess
public ResultBean rfidOutEnd(HttpServletRequest request) {
String rfid = request.getParameter("rfid");
log.info("rfidOutEnd, rfid=" + rfid);
// loadingUtil.RfidPutInEnd(rfid);
return ResultBean.newOkResult("");
}
// @ApiOperation("根据RFID获取入库单号,未开始时返回空") // @ApiOperation("根据RFID获取入库单号,未开始时返回空")
// @PostMapping(value = "/getRfidInList") // @PostMapping(value = "/getRfidInList")
......
...@@ -13,6 +13,7 @@ import com.neotel.smfcore.core.inList.service.po.InListItem; ...@@ -13,6 +13,7 @@ import com.neotel.smfcore.core.inList.service.po.InListItem;
import com.neotel.smfcore.core.inList.util.InListCache; import com.neotel.smfcore.core.inList.util.InListCache;
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.StoragePos; import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.custom.micron1053.api.MicronApi; import com.neotel.smfcore.custom.micron1053.api.MicronApi;
import com.neotel.smfcore.custom.micron1053.loading.Bean.LoadingInfo; import com.neotel.smfcore.custom.micron1053.loading.Bean.LoadingInfo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -23,6 +24,7 @@ import javax.swing.text.html.InlineView; ...@@ -23,6 +24,7 @@ import javax.swing.text.html.InlineView;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
@Service @Service
@Slf4j @Slf4j
...@@ -80,13 +82,14 @@ public class LoadingUtil { ...@@ -80,13 +82,14 @@ public class LoadingUtil {
updateItemState( barcode,"", INITEM_STATUS.XRayFail); updateItemState( barcode,"", INITEM_STATUS.XRayFail);
} }
public void updateItemState( String barcode,String posName,int s) { public InListItem updateItemState( String barcode,String posName,int s) {
InList inList = getInlist(); InList inList = getInlist();
if (inList == null) { if (inList == null) {
return; return null;
} }
InListItem result = null;
boolean update = false; boolean update = false;
List<InListItem> inListItems = new ArrayList<>(); List<InListItem> inListItems = new ArrayList<>();
for (InListItem item : for (InListItem item :
...@@ -101,7 +104,8 @@ public class LoadingUtil { ...@@ -101,7 +104,8 @@ public class LoadingUtil {
update = true; update = true;
item.setState(s); item.setState(s);
item = inListItemManager.save(item); item = inListItemManager.save(item);
log.info(" 更新入库单["+inList.getName()+"]:条码 [" + item.getRi() + "]库位[" + item.getPosName() + "]的状态=" + s); result = item;
log.info(" 更新入库单[" + inList.getName() + "]:条码 [" + item.getRi() + "]库位[" + item.getPosName() + "]的状态=" + s);
} }
inListItems.add(item); inListItems.add(item);
} }
...@@ -111,12 +115,68 @@ public class LoadingUtil { ...@@ -111,12 +115,68 @@ public class LoadingUtil {
inList = inListManager.save(inList); inList = inListManager.save(inList);
inListCache.addInListToMap(inList); inListCache.addInListToMap(inList);
} }
return result;
}
//入库完成更新任务状态
public void putEndUpdate(DataLog dataLog) {
String barcode = dataLog.getBarcode();
String posName = dataLog.getPosName();
int state = INITEM_STATUS.PutEnd;
if (dataLog.isCancel()) {
state = INITEM_STATUS.Cancel;
}
InListItem item = updateItemState(barcode, posName, state);
if (item != null && item.isRfidEnd() && ObjectUtil.isNotEmpty(item.getRfid())) {
//如果rfid已完成
PutEndCheck(item.getRfid());
}
} }
//入库完成,检查是否所有任务都已结束,需要触发API002;
public void PutEndCheck(String rfid) {
InList inList = getInlist();
if (inList == null) {
return;
}
if (!inList.getRfidList().contains(rfid)) {
return;
}
public void puEndUpdateTime(String barcode,String posName) { boolean hasNoEnd = false;
updateItemState( barcode,posName, INITEM_STATUS.PutEnd);
List<InListItem> inListItems = new ArrayList<>();
//查找这个rfid的所有任务,进行推送
for (InListItem item : inList.getInListItems()) {
if (item.getRfid().equals(rfid)) {
if (item.getState() == INITEM_STATUS.PutIn) {
hasNoEnd = true;
break;
}
}
}
if (hasNoEnd) {
return;
} else {
List<StoragePos> posList = new ArrayList<>();
for (InListItem item : inList.getInListItems()) {
if (item.getRfid().equals(rfid) && item.getState() == INITEM_STATUS.PutEnd && ObjectUtil.isNotEmpty(item.getPosName())) {
StoragePos pos = storagePosManager.getByPosName(item.getPosName());
posList.add(pos);
}
}
if (posList.size() > 0) {
log.info("入库单["+inList.getName()+"],rfid [" + rfid + "],所有入库任务已完成,开始调用API002");
PushToMes(rfid,inList, posList);
}
}
} }
public boolean RfidPutInEnd(String rfid) { public boolean RfidPutInEnd(String rfid) {
...@@ -134,23 +194,46 @@ public class LoadingUtil { ...@@ -134,23 +194,46 @@ public class LoadingUtil {
List<StoragePos> posList = new ArrayList<>(); List<StoragePos> posList = new ArrayList<>();
boolean hasNoEnd = false;
List<InListItem> inListItems = new ArrayList<>();
log.info("入库单[" + inList.getName() + "],rfid [" + rfid + "],料串入库结束,更改 rfidEnd=true");
//查找这个rfid的所有任务,进行推送 //查找这个rfid的所有任务,进行推送
for (InListItem item : inList.getInListItems()) { for (InListItem item : inList.getInListItems()) {
if (item.getRfid().equals(rfid) && item.getState() == INITEM_STATUS.PutEnd) { if (item.getRfid().equals(rfid)) {
if (ObjectUtil.isEmpty(item.getPosName())) { if (item.getState() == INITEM_STATUS.PutEnd) {
continue; if (ObjectUtil.isEmpty(item.getPosName())) {
continue;
}
StoragePos pos = storagePosManager.getByPosName(item.getPosName());
posList.add(pos);
} else if (item.getState() == INITEM_STATUS.PutIn) {
hasNoEnd = true;
} }
StoragePos pos = storagePosManager.getByPosName(item.getPosName()); item.setRfidEnd(true);
posList.add(pos); item = inListItemManager.save(item);
} }
inListItems.add(item);
} }
return PushToMes(inList, posList);
inList.setInListItems(inListItems);
inListCache.addInListToMap(inList);
if (hasNoEnd) {
log.info("RfidPutInEnd 入库单[" + inList.getName() + "],rfid [" + rfid + "],还有未入库完成的任务,暂时不调用API002");
return true;
}
if (posList.size() > 0) {
log.info("RfidPutInEnd 入库单[" + inList.getName() + "],rfid [" + rfid + "],所有入库任务已完成,开始调用API002");
PushToMes(rfid, inList, posList);
}
return true;
} }
private boolean PushToMes(InList inList,List<StoragePos> posList) { private boolean PushToMes(String rfid, InList inList,List<StoragePos> posList) {
Map<String, Boolean> resultMap = MicronApi.API002("", inList.getOperationId(), posList); Map<String, Boolean> resultMap = MicronApi.API002(rfid, inList.getOperationId(), posList);
List<InListItem> inListItems = new ArrayList<>(); List<InListItem> inListItems = new ArrayList<>();
boolean isEnd = true; boolean isEnd = true;
...@@ -162,8 +245,8 @@ public class LoadingUtil { ...@@ -162,8 +245,8 @@ public class LoadingUtil {
if (resultMap.containsKey(item.getRi())) { if (resultMap.containsKey(item.getRi())) {
Boolean result = resultMap.get(item.getRi()); Boolean result = resultMap.get(item.getRi());
if(result==null){ if (result == null) {
result=false; result = false;
} }
int newS; int newS;
if (result) { if (result) {
...@@ -173,14 +256,14 @@ public class LoadingUtil { ...@@ -173,14 +256,14 @@ public class LoadingUtil {
} }
log.info("更新 rfid[" + item.getRfid() + "]结束入料,更新入库单[" + inList.getName() + "]:条码 [" + item.getRi() + "]库位[" + item.getPosName() + "]的状态=" + newS); log.info("更新 入库单["+inList.getName()+"] rfid[" + item.getRfid() + "] :条码 [" + item.getRi() + "]库位[" + item.getPosName() + "]的状态=" + newS);
if (item.getState() != newS) { if (item.getState() != newS) {
item.setState(newS); item.setState(newS);
item = inListItemManager.save(item); item = inListItemManager.save(item);
} }
inListItems.add(item); inListItems.add(item);
} }
if (item.getState() != INITEM_STATUS.Success) { if (!item.isEnd()) {
isEnd = false; isEnd = false;
} }
} }
...@@ -193,12 +276,22 @@ public class LoadingUtil { ...@@ -193,12 +276,22 @@ public class LoadingUtil {
inList = inListManager.save(inList); inList = inListManager.save(inList);
inListCache.addInListToMap(inList); inListCache.addInListToMap(inList);
log.info(" 入库单[" + inList.getName() + "]:任务已全部完成,清空当前loadinginfo"); //判断是否全部完成
dataCache.updateCache(Constants.CACHE_LOADING, new LoadingInfo());
List<InListItem> notEndList = inListItems.stream()
.filter(item -> (!item.isEnd()))
.collect(Collectors.toList());
if (notEndList==null||notEndList.size()<=0) {
log.info(" 入库单[" + inList.getName() + "]:任务已全部完成,清空当前loadinginfo");
dataCache.updateCache(Constants.CACHE_LOADING, new LoadingInfo());
}
return true; return true;
} }
public boolean Retry(){ public boolean Retry() {
//TODO rfid入库完成 //TODO rfid入库完成
InList inList = getInlist(); InList inList = getInlist();
...@@ -206,19 +299,24 @@ public class LoadingUtil { ...@@ -206,19 +299,24 @@ public class LoadingUtil {
return false; return false;
} }
List<StoragePos> posList=new ArrayList<>(); for (String rfid :
inList.getRfidList()) {
//查找所有失败的重新推送 List<StoragePos> posList = new ArrayList<>();
for (InListItem item: inList.getInListItems()) { //查找所有失败的重新推送
if( item.getState()==INITEM_STATUS.Fail){ for (InListItem item : inList.getInListItems()) {
if(ObjectUtil.isEmpty(item.getPosName())){ if (item.getRfid().equals(rfid) && item.getState() == INITEM_STATUS.Fail) {
continue; if (ObjectUtil.isEmpty(item.getPosName())) {
continue;
}
StoragePos pos = storagePosManager.getByPosName(item.getPosName());
posList.add(pos);
} }
StoragePos pos=storagePosManager.getByPosName(item.getPosName()); }
posList.add(pos); if (posList.size() > 0) {
PushToMes(rfid, inList, posList);
} }
} }
return PushToMes(inList, posList); return true;
} }
public String getRfidByBarcode(String barcode) { public String getRfidByBarcode(String barcode) {
......
...@@ -10,18 +10,21 @@ import com.neotel.smfcore.core.inList.enums.INLIST_STATUS; ...@@ -10,18 +10,21 @@ import com.neotel.smfcore.core.inList.enums.INLIST_STATUS;
import com.neotel.smfcore.core.inList.service.po.InList; import com.neotel.smfcore.core.inList.service.po.InList;
import com.neotel.smfcore.core.inList.util.InListCache; import com.neotel.smfcore.core.inList.util.InListCache;
import com.neotel.smfcore.core.storage.service.po.Storage; import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.custom.micron1053.api.MicronApi;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.swing.text.html.InlineView; import javax.swing.text.html.InlineView;
@Slf4j @Slf4j
@Service
public class MicronSpApiListener extends BaseSmfApiListener { public class MicronSpApiListener extends BaseSmfApiListener {
@Autowired @Autowired
private InListCache inListCache; private InListCache inListCache;
@Override @Override
public boolean isForThisApi(String apiName) { public boolean isForThisApi(String apiName) {
return Micron20031Api.isEnable(); return MicronApi.isEnable();
} }
@Override @Override
public Barcode canPutInAfterResolve(String inCheckUrl, CodeValidateParam params, Barcode barcode) throws ValidateException { public Barcode canPutInAfterResolve(String inCheckUrl, CodeValidateParam params, Barcode barcode) throws ValidateException {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!