Commit ad48245f LN

API002问题修改

1 个父辈 ee164710
......@@ -9,16 +9,19 @@ public class INITEM_STATUS {
public static int PutIn=1;
/**入库完成*/
public static int PutEnd=1;
public static int PutEnd=2;
//入库取消
public static int Cancel=3;
/**XRay点料*/
public static int XRay=2;
public static int XRay=4;
/**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 {
private String rfid;
/**
* rfid已入库完成。
*/
private boolean rfidEnd=false;
/**
* 入库的库位号
*/
private String posName;
......@@ -87,6 +92,10 @@ public class InListItem extends BasePo implements Serializable {
*/
private int state= INITEM_STATUS.Wait;
public boolean isEnd() {
return state == INITEM_STATUS.Success || state == INITEM_STATUS.Cancel;
}
public boolean isSuccess(){
return state==INITEM_STATUS.Success||state==INITEM_STATUS.PutIn||state==INITEM_STATUS.PutEnd;
......
......@@ -132,7 +132,7 @@ public class MicronApi {
Integer mamQty = result.getResult("mamQty");
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;
......@@ -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);
......@@ -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);
try {
String jobId=operationId+"_"+rfid;
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("jobId", jobId);
paramMap.put("operationId", operationId);
......
......@@ -18,7 +18,13 @@ public class MicronApiListener extends BaseSmfApiListener {
@Override
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 {
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获取入库单号,未开始时返回空")
// @PostMapping(value = "/getRfidInList")
......
......@@ -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.storage.service.manager.IStoragePosManager;
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.loading.Bean.LoadingInfo;
import lombok.extern.slf4j.Slf4j;
......@@ -23,6 +24,7 @@ import javax.swing.text.html.InlineView;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
@Slf4j
......@@ -80,13 +82,14 @@ public class LoadingUtil {
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();
if (inList == null) {
return;
return null;
}
InListItem result = null;
boolean update = false;
List<InListItem> inListItems = new ArrayList<>();
for (InListItem item :
......@@ -101,7 +104,8 @@ public class LoadingUtil {
update = true;
item.setState(s);
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);
}
......@@ -111,12 +115,68 @@ public class LoadingUtil {
inList = inListManager.save(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) {
updateItemState( barcode,posName, INITEM_STATUS.PutEnd);
boolean hasNoEnd = false;
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) {
......@@ -134,23 +194,46 @@ public class LoadingUtil {
List<StoragePos> posList = new ArrayList<>();
boolean hasNoEnd = false;
List<InListItem> inListItems = new ArrayList<>();
log.info("入库单[" + inList.getName() + "],rfid [" + rfid + "],料串入库结束,更改 rfidEnd=true");
//查找这个rfid的所有任务,进行推送
for (InListItem item : inList.getInListItems()) {
if (item.getRfid().equals(rfid) && item.getState() == INITEM_STATUS.PutEnd) {
if (ObjectUtil.isEmpty(item.getPosName())) {
continue;
if (item.getRfid().equals(rfid)) {
if (item.getState() == INITEM_STATUS.PutEnd) {
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());
posList.add(pos);
item.setRfidEnd(true);
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) {
Map<String, Boolean> resultMap = MicronApi.API002("", inList.getOperationId(), posList);
private boolean PushToMes(String rfid, InList inList,List<StoragePos> posList) {
Map<String, Boolean> resultMap = MicronApi.API002(rfid, inList.getOperationId(), posList);
List<InListItem> inListItems = new ArrayList<>();
boolean isEnd = true;
......@@ -162,8 +245,8 @@ public class LoadingUtil {
if (resultMap.containsKey(item.getRi())) {
Boolean result = resultMap.get(item.getRi());
if(result==null){
result=false;
if (result == null) {
result = false;
}
int newS;
if (result) {
......@@ -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) {
item.setState(newS);
item = inListItemManager.save(item);
}
inListItems.add(item);
}
if (item.getState() != INITEM_STATUS.Success) {
if (!item.isEnd()) {
isEnd = false;
}
}
......@@ -193,12 +276,22 @@ public class LoadingUtil {
inList = inListManager.save(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;
}
public boolean Retry(){
public boolean Retry() {
//TODO rfid入库完成
InList inList = getInlist();
......@@ -206,19 +299,24 @@ public class LoadingUtil {
return false;
}
List<StoragePos> posList=new ArrayList<>();
//查找所有失败的重新推送
for (InListItem item: inList.getInListItems()) {
if( item.getState()==INITEM_STATUS.Fail){
if(ObjectUtil.isEmpty(item.getPosName())){
continue;
for (String rfid :
inList.getRfidList()) {
List<StoragePos> posList = new ArrayList<>();
//查找所有失败的重新推送
for (InListItem item : inList.getInListItems()) {
if (item.getRfid().equals(rfid) && item.getState() == INITEM_STATUS.Fail) {
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) {
......
......@@ -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.util.InListCache;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.custom.micron1053.api.MicronApi;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.swing.text.html.InlineView;
@Slf4j
@Service
public class MicronSpApiListener extends BaseSmfApiListener {
@Autowired
private InListCache inListCache;
@Override
public boolean isForThisApi(String apiName) {
return Micron20031Api.isEnable();
return MicronApi.isEnable();
}
@Override
public Barcode canPutInAfterResolve(String inCheckUrl, CodeValidateParam params, Barcode barcode) throws ValidateException {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!