Commit 5f460c1c LN

新功能:MBR,REQ,GR,MCL

1 个父辈 00042f65
...@@ -828,7 +828,11 @@ public class RobotBoxHandler extends BaseDeviceHandler { ...@@ -828,7 +828,11 @@ public class RobotBoxHandler extends BaseDeviceHandler {
if (!inList.isValidRfid(rfid)) { if (!inList.isValidRfid(rfid)) {
return barcode; return barcode;
} }
//如果入库单已手动结束,不再接收新任务
if(inList.isManualFinish()){
log.info("当前入库单[" + inList.getName() + "]已手动结束,不需要再验证:"+barcode.getBarcode());
return barcode;
}
operationId = inList.getOperationId(); operationId = inList.getOperationId();
if (ObjectUtil.isEmpty(operationId)) { if (ObjectUtil.isEmpty(operationId)) {
......
...@@ -71,6 +71,11 @@ public class InList extends BasePo implements Serializable { ...@@ -71,6 +71,11 @@ public class InList extends BasePo implements Serializable {
private String operationId=""; private String operationId="";
/** /**
* 已手动确认结束
*/
private boolean manualFinish=false;
/**
* ReqId * ReqId
*/ */
private String reqId=""; private String reqId="";
......
package com.neotel.smfcore.custom.micron1053.api; package com.neotel.smfcore.custom.micron1053.api;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject; import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ApiException; import com.neotel.smfcore.common.exception.ApiException;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants; import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.DateUtil; import com.neotel.smfcore.common.utils.DateUtil;
import com.neotel.smfcore.common.utils.HttpHelper; import com.neotel.smfcore.common.utils.HttpHelper;
import com.neotel.smfcore.common.utils.JsonUtil; import com.neotel.smfcore.common.utils.JsonUtil;
import com.neotel.smfcore.core.api.listener.BaseSmfApiListener;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager; import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode; import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.util.DataCache; import com.neotel.smfcore.core.device.util.DataCache;
...@@ -220,41 +219,26 @@ public class MicronApi { ...@@ -220,41 +219,26 @@ public class MicronApi {
} }
private static String getDErrorMsg(MicronResult result) throws ApiException { private static String getDErrorMsg(MicronResult result) throws ApiException {
return result.getDErrorMsg();
// String errMsg = ""; // 551 - Invalid MBR
// Object errCode = -1; // 550 - SAP Down
// String detail = ""; // 552 - Invalid REQ
// try { // 553 - Invalid GR
// // 550 - SAP Down
// // "error": <ErrCode>,
//// "message": <ErrMessage>, String msg= result.getDErrorMsg();
//// "detail": <ErrDetail> if(ObjectUtil.isEmpty(msg)&&result!=null){
// if( result.getHttpCode()==551){
// errMsg = result.getResult("message", false); return "Invalid MBR";
// if (ObjectUtil.isEmpty(errMsg)) { }else if( result.getHttpCode()==551){
// errMsg = ""; return "SAP Down";
// } else { }else if( result.getHttpCode()==552){
// errMsg = "message:" + errMsg; return "Invalid REQ";
// } }else if( result.getHttpCode()==553){
// errCode = result.getResult("error", false); return "Invalid GR";
// }
// if (ObjectUtil.isEmpty(errCode)) { }
// errCode = ""; return msg;
// } else {
// errCode = "error:" + errCode;
// }
// detail = result.getResult("detail", false);
// if (ObjectUtil.isEmpty(detail)) {
// detail = "";
// } else {
// detail = "detail:" + detail;
// }
//
// return errCode + ";" + errMsg + ";" + detail;
// } catch (Exception exception) {
// log.error("出错:" + exception);
// return errCode + ";" + errMsg + ";" + detail + ":" + exception.toString();
// }
} }
public static Map<String,String> API002(String rfid, String operationId, List<StoragePos> storagePos) { public static Map<String,String> API002(String rfid, String operationId, List<StoragePos> storagePos) {
...@@ -1046,49 +1030,74 @@ public class MicronApi { ...@@ -1046,49 +1030,74 @@ public class MicronApi {
return false; return false;
} }
public static boolean Api101(String id, String operationId, String skipSap) { private static ResultBean Api100(String apiName,String url) {
String url = config.getUrl(config.api_name_101);
url = MessageFormat.format(url,id,operationId,skipSap);
if (Debug) {
log.info("调试状态直接返回true, 调用MES接口 " + apiName + ": url=" + url + " ");
return ResultBean.newOkResult(true);
}
try { try {
log.info("调用MES接口 API101: url=" + url + " "); log.info("调用MES接口 " + apiName + ": url=" + url + " ");
MicronResult result = HttpHelper.getMicronJson(url); MicronResult result = HttpHelper.getMicronJson(url);
return true; String errMsg = getDErrorMsg(result);
if (result.isOk()) {
return ResultBean.newOkResult(true);
} else if (ObjectUtil.isNotEmpty(errMsg)) {
log.error(apiName+" ,接口通信失败:" + errMsg);
return ResultBean.newErrorResult(-1, "smfcore.api.fail", "{0} Failed to get data", new String[]{apiName + " : " + errMsg});
} else {
log.error(apiName+" ,接口通信失败:" + result.getResponseData());
return ResultBean.newErrorResult(-1, "smfcore.api.fail", "{0} Failed to get data", new String[]{apiName + " : " + result.getResponseData()});
}
} catch (ApiException e) { } catch (ApiException e) {
log.error(url + "出错", e); log.error(url + "出错", e);
return ResultBean.newErrorResult(-1, e.getMsgKey(), e.getDefaultMsg(), e.getMsgParam());
} }
}
public static ResultBean Api101(String id, String operationId, String skipSap) {
String url = config.getUrl(config.api_name_101);
url = MessageFormat.format(url, id, operationId, skipSap);
return Api100("API101",url);
// if (Debug) {
// log.info("调试状态直接返回true, 调用MES接口 API101: url=" + url + " ");
// return ResultBean.newOkResult(true);
// }
// try {
// log.info("调用MES接口 API101: url=" + url + " ");
// MicronResult result = HttpHelper.getMicronJson(url);
// String errMsg = getDErrorMsg(result);
// if (result.isOk()) {
// return ResultBean.newOkResult(true);
// } else if (ObjectUtil.isNotEmpty(errMsg)) {
// log.error("API101 ,接口通信失败:" + errMsg);
// return ResultBean.newErrorResult(-1, "smfcore.api.fail", "{0} Failed to get data", new String[]{"Api011 : " + errMsg});
//
// } else {
// log.error("API101 ,接口通信失败:" + result.getResponseData());
// return ResultBean.newErrorResult(-1, "smfcore.api.fail", "{0} Failed to get data", new String[]{"Api011 : " + result.getResponseData()});
// }
//
// } catch (ApiException e) {
// log.error(url + "出错", e);
// return ResultBean.newErrorResult(-1, e.getMsgKey(), e.getDefaultMsg(),e.getMsgParam());
// }
return false;
} }
public static boolean Api102(String id, String operationId) { public static ResultBean Api102(String id, String operationId) {
String url = config.getUrl(config.api_name_102); String url = config.getUrl(config.api_name_102);
url = MessageFormat.format(url, id, operationId); url = MessageFormat.format(url, id, operationId);
return Api100("API102",url);
try {
log.info("调用MES接口 API102: url=" + url + " ");
MicronResult result = HttpHelper.getMicronJson(url);
return true;
} catch (ApiException e) {
log.error(url + "出错", e);
}
return false;
} }
public static boolean Api103(String purchaseOrder, String packagingSlip, String operationId, String skipSap) { public static ResultBean Api103( String packagingSlip,String purchaseOrder, String operationId, String skipSap) {
String url = config.getUrl(config.api_name_103); String url = config.getUrl(config.api_name_103);
url = MessageFormat.format(url, purchaseOrder, packagingSlip, operationId, skipSap); url = MessageFormat.format(url, purchaseOrder, packagingSlip, operationId, skipSap);
return Api100("API102",url);
try {
log.info("调用MES接口 API103: url=" + url + " ");
MicronResult result = HttpHelper.getMicronJson(url);
return true;
} catch (ApiException e) {
log.error(url + "出错", e);
}
return false;
} }
public static String Api201(String linePrepOrderId, String operationId) { public static String Api201(String linePrepOrderId, String operationId) {
......
...@@ -94,6 +94,10 @@ public class LoadingController { ...@@ -94,6 +94,10 @@ public class LoadingController {
InList inList=loadingUtil.getInlist(); InList inList=loadingUtil.getInlist();
if(inList==null){ if(inList==null){
LoadingInfo loadingInfo=dataCache.getCache(Constants.CACHE_LOADING);
if(loadingInfo==null&&ObjectUtil.isNotEmpty(loadingInfo.getOperationId())&&(!loadingInfo.getMode().equals(mode))) {
return ResultBean.newErrorResult(9, "smfcore.micron.modeError", loadingInfo.getMode() + " Loading 未完成", new String[]{loadingInfo.getMode()});
}
return ResultBean.newErrorResult(-1,"smfcore.micron.nodata","未找到信息"); return ResultBean.newErrorResult(-1,"smfcore.micron.nodata","未找到信息");
}else { }else {
...@@ -101,7 +105,7 @@ public class LoadingController { ...@@ -101,7 +105,7 @@ public class LoadingController {
if (inList.getMode().equals(mode)) { if (inList.getMode().equals(mode)) {
return ResultBean.newOkResult(getList(inList)); return ResultBean.newOkResult(getList(inList));
} else { } else {
return ResultBean.newErrorResult(9, "smfcore.micron.otherModeNotEnd", inList.getMode()+" Loading Not End"); return ResultBean.newErrorResult(9, "smfcore.micron.modeError", inList.getMode() + " Loading 未完成",new String[]{inList.getMode()});
} }
} }
} }
...@@ -166,7 +170,7 @@ public class LoadingController { ...@@ -166,7 +170,7 @@ public class LoadingController {
return ResultBean.newErrorResult(-1, "smfcore.micron.nodata", "未找到信息"); return ResultBean.newErrorResult(-1, "smfcore.micron.nodata", "未找到信息");
} }
if(!inList.getMode().equals(mode)) { if(!inList.getMode().equals(mode)) {
return ResultBean.newErrorResult(9, "smfcore.micron.otherModeNotEnd", inList.getMode()+" Loading Not End"); return ResultBean.newErrorResult(-1, "smfcore.micron.modeError", inList.getMode() + " Loading 未完成",new String[]{inList.getMode()});
} }
for (InListItem item : for (InListItem item :
inList.getInListItems()) { inList.getInListItems()) {
...@@ -217,12 +221,16 @@ public class LoadingController { ...@@ -217,12 +221,16 @@ public class LoadingController {
@ApiOperation("loading->入库按钮 输入参数后获取数据") @ApiOperation("loading->入库按钮 输入参数后获取数据")
@PostMapping("/submit") @PostMapping("/sumbit")
@AnonymousAccess @AnonymousAccess
public ResultBean submit(@RequestBody Map<String,Object> params ) { public ResultBean sumbit(@RequestBody Map<String,Object> params ) {
String mode = getParam(params, "mode", APIMODE.MATRET); String mode = getParam(params, "mode", APIMODE.MATRET);
LoadingInfo loadingInfo = dataCache.getCache(Constants.CACHE_LOADING);
if (loadingInfo == null && ObjectUtil.isNotEmpty(loadingInfo.getOperationId()) && (!loadingInfo.getMode().equals(mode))) {
return ResultBean.newErrorResult(9, "smfcore.micron.modeError", loadingInfo.getMode() + " Loading 未完成", new String[]{loadingInfo.getMode()});
}
int shelfNum = Integer.MAX_VALUE; int shelfNum = Integer.MAX_VALUE;
String mbrId = ""; String mbrId = "";
String reqId = ""; String reqId = "";
...@@ -258,6 +266,8 @@ public class LoadingController { ...@@ -258,6 +266,8 @@ public class LoadingController {
} }
} else if (mode.equals(APIMODE.MCL)) { } else if (mode.equals(APIMODE.MCL)) {
}else{
return ResultBean.newErrorResult(-1, "smfcore.micron.operationFailure", "操作失败");
} }
...@@ -266,8 +276,8 @@ public class LoadingController { ...@@ -266,8 +276,8 @@ public class LoadingController {
InList inList = loadingUtil.getInlist(); InList inList = loadingUtil.getInlist();
if (inList == null) { if (inList == null) {
//判断是否已有operationID //判断是否已有operationID
LoadingInfo loadingInfo=dataCache.getCache(Constants.CACHE_LOADING);
if(loadingInfo==null||ObjectUtil.isEmpty(loadingInfo.getOperationId())) { if (loadingInfo == null || ObjectUtil.isEmpty(loadingInfo.getOperationId())) {
// 接口获取 // 接口获取
String operId = MicronApi.Api011(mode, SecurityUtils.getCurrentUsername(), ""); String operId = MicronApi.Api011(mode, SecurityUtils.getCurrentUsername(), "");
if (ObjectUtil.isEmpty(operId)) { if (ObjectUtil.isEmpty(operId)) {
...@@ -279,34 +289,28 @@ public class LoadingController { ...@@ -279,34 +289,28 @@ public class LoadingController {
loadingInfo.inlistName = mode + "-" + operId + "-" + DateUtil.toDateString(loadingInfo.startTime); loadingInfo.inlistName = mode + "-" + operId + "-" + DateUtil.toDateString(loadingInfo.startTime);
dataCache.updateCache(Constants.CACHE_LOADING, loadingInfo); dataCache.updateCache(Constants.CACHE_LOADING, loadingInfo);
log.info("submit: mode=" + mode + ",获取到 OperationId=" + operId); log.info("submit: mode=" + mode + ",获取到 OperationId=" + operId);
} else {
log.info("submit: mode=" + mode + ",已有 OperationId=" + loadingInfo.getOperationId());
} }
else{
log.info("submit: mode=" + mode + ",已有 OperationId="+loadingInfo.getOperationId());
}
String operId=loadingInfo.getOperationId();
if(APIMODE.MBR.equals(mode)){ String operId = loadingInfo.getOperationId();
boolean result= MicronApi.Api101(mbrId,operId,""); ResultBean resultBean = ResultBean.newErrorResult(-1, "smfcore.micron.operationFailure", "操作失败");
if(!result) { if (APIMODE.MBR.equals(mode)) {
return ResultBean.newErrorResult(-1, "smfcore.api.fail", "Api101获取数据失败", new String[]{"Api101"}); resultBean = MicronApi.Api101(mbrId, operId, "");
} } else if (APIMODE.REQ.equals(mode)) {
}else if(APIMODE.REQ.equals(mode)){ resultBean = MicronApi.Api102(reqId, operId);
boolean result= MicronApi.Api102(reqId,operId ); } else if (APIMODE.GR.equals(mode)) {
if(!result) { resultBean = MicronApi.Api103(deliveryNote, purchaseOrder, operId, "");
return ResultBean.newErrorResult(-1, "smfcore.api.fail", "Api101获取数据失败", new String[]{"Api101"}); }else if(APIMODE.MCL.equals(mode)){
} resultBean=ResultBean.newOkResult(true);
}else if(APIMODE.GR.equals(mode)) {
boolean result = MicronApi.Api103(deliveryNote, purchaseOrder, operId,"");
if (!result) {
return ResultBean.newErrorResult(-1, "smfcore.api.fail", "Api103获取数据失败", new String[]{"Api103"});
}
} }
if (!resultBean.isOkResult()) {
return resultBean;
}
inList = new InList(loadingInfo.inlistName, INLIST_STATUS.WAIT, new ArrayList<>(), System.currentTimeMillis(), false); inList = new InList(loadingInfo.inlistName, INLIST_STATUS.WAIT, new ArrayList<>(), System.currentTimeMillis(), false);
inList.SetParam(loadingInfo.mode,shelfNum,reqId,mbrId,deliveryNote,purchaseOrder,loadingInfo.getOperationId()); inList.SetParam(loadingInfo.mode, shelfNum, reqId, mbrId, deliveryNote, purchaseOrder, loadingInfo.getOperationId());
inList = inListManager.createWithItems(inList); inList = inListManager.createWithItems(inList);
inListCache.addInListToMap(inList); inListCache.addInListToMap(inList);
...@@ -322,7 +326,7 @@ public class LoadingController { ...@@ -322,7 +326,7 @@ public class LoadingController {
@PostMapping("/returnMaterial") @PostMapping("/returnMaterial")
@AnonymousAccess @AnonymousAccess
public ResultBean returnMaterial(@RequestBody Map<String,Object> params ) { public ResultBean returnMaterial(@RequestBody Map<String,Object> params ) {
return submit(params); return sumbit(params);
// List<String> rfids = (List<String>) params; // List<String> rfids = (List<String>) params;
// String numStr = params.get("num").toString(); // String numStr = params.get("num").toString();
// //
...@@ -388,7 +392,7 @@ public class LoadingController { ...@@ -388,7 +392,7 @@ public class LoadingController {
return ResultBean.newErrorResult(-1, "smfcore.micron.operationFailure", "操作失败"); return ResultBean.newErrorResult(-1, "smfcore.micron.operationFailure", "操作失败");
} else { } else {
if (!inList.getMode().equals(mode)) { if (!inList.getMode().equals(mode)) {
return ResultBean.newErrorResult(-1, "smfcore.micron.modeError", "参数错误," + mode + " Loading 还未完成"); return ResultBean.newErrorResult(-1, "smfcore.micron.modeError", inList.getMode() + " Loading 未完成",new String[]{inList.getMode()});
} }
//重试,重发指令 //重试,重发指令
...@@ -411,7 +415,7 @@ public class LoadingController { ...@@ -411,7 +415,7 @@ public class LoadingController {
return ResultBean.newErrorResult(-1,"smfcore.micron.operationFailure","操作失败"); return ResultBean.newErrorResult(-1,"smfcore.micron.operationFailure","操作失败");
} else { } else {
if (!inList.getMode().equals(mode)) { if (!inList.getMode().equals(mode)) {
return ResultBean.newErrorResult(-1, "smfcore.micron.modeError", "参数错误," + mode + " Loading 还未完成"); return ResultBean.newErrorResult(-1, "smfcore.micron.modeError", inList.getMode() + " Loading 未完成",new String[]{inList.getMode()});
} }
//结束入库 //结束入库
for (InListItem item : inList.getInListItems()) { for (InListItem item : inList.getInListItems()) {
...@@ -449,30 +453,47 @@ public class LoadingController { ...@@ -449,30 +453,47 @@ public class LoadingController {
@ApiOperation("Finish") @ApiOperation("Finish")
@RequestMapping("/finish") @RequestMapping("/finish")
@AnonymousAccess @AnonymousAccess
public ResultBean finish(@RequestBody(required = false) Map<String,Object> params ) { public ResultBean finish(@RequestParam(required = false) Map<String,Object> params ) {
String mode = getParam(params, "mode", APIMODE.MATRET); String mode = getParam(params, "mode", APIMODE.MATRET);
// String mode=APIMODE.MATRET; // String mode=APIMODE.MATRET;
InList inList = loadingUtil.getInlist(); InList inList = loadingUtil.getInlist();
if (inList == null) { if (inList == null) {
return ResultBean.newErrorResult(-1,"smfcore.micron.operationFailure","操作失败"); return ResultBean.newErrorResult(-1, "smfcore.micron.operationFailure", "操作失败");
} else { } else {
if (!inList.getMode().equals(mode)) { if (!inList.getMode().equals(mode)) {
return ResultBean.newErrorResult(-1, "smfcore.micron.modeError", "参数错误," + mode + " Loading 还未完成"); return ResultBean.newErrorResult(-1, "smfcore.micron.modeError", inList.getMode() + " Loading 未完成", new String[]{inList.getMode()});
} }
if (inList.getStatus() == INLIST_STATUS.OK){
log.info(" 入库单[" + inList.getName() + "]:任务已全部完成,清空当前loadinginfo,更改action=COMPLETE");
MicronApi.ActionUpdate(inList.getOperationId(),MicronApi.COMPLETED); //判断是否有执行中的入库任务
dataCache.updateCache(Constants.CACHE_LOADING, new LoadingInfo()); for (InListItem item : inList.getInListItems()) {
return ResultBean.newOkResult(""); if (item.getState() == INITEM_STATUS.PutIn) {
List<DataLog> allTask = taskService.getAllTasks();
for (DataLog task : allTask) {
if (task.isEnd() || task.isFinished() || task.isCancel()) {
continue;
}
if (OP.PUT_IN == task.getType() && task.getPosName().equals(item.getPosName())) {
log.info("入库单 " + inList.getName() + ", 物料" + item.getPosName() + "还在入库中,无法End");
return ResultBean.newErrorResult(-1, "smfcore.micron.inlisttaskNotEnd", "操作失败:入库任务{0}未完成", new String[]{task.getPosName()});
}
}
}
} }
if(inList.getMode().equals(APIMODE.MATRET)){
return ResultBean.newErrorResult(-1,"smfcore.inlist.noEnd","入库单[{0}]未完成",new String[]{inList.getName()}); if (!inList.getMode().equals(APIMODE.MATRET)) {
}else{
//除matret,其他的都是手动结束 //除matret,其他的都是手动结束
inList = loadingUtil.finish(inList);
}
if (inList.getStatus() == INLIST_STATUS.OK) {
log.info(" 入库单[" + inList.getName() + "]:任务已全部完成,清空当前loadinginfo,更改action=COMPLETE");
MicronApi.ActionUpdate(inList.getOperationId(), MicronApi.COMPLETED);
dataCache.updateCache(Constants.CACHE_LOADING, new LoadingInfo());
return ResultBean.newOkResult(""); return ResultBean.newOkResult("");
} else {
return ResultBean.newErrorResult(-1, "smfcore.inlist.noEnd", "入库单[{0}]未完成", new String[]{inList.getName()});
} }
} }
} }
} }
...@@ -128,6 +128,11 @@ public class LoadingUtil { ...@@ -128,6 +128,11 @@ public class LoadingUtil {
if (inList == null) { if (inList == null) {
return; return;
} }
//如果入库单已手动结束,不再接收新任务
if(inList.isManualFinish()){
log.info("AddInListItem 当前入库[" + inList.getName() + "]已手动结束,不添加新物料:"+barcode.getBarcode());
return;
}
inList.addRfid(rfid); inList.addRfid(rfid);
inList.setStatus(INLIST_STATUS.ABNORMAL); inList.setStatus(INLIST_STATUS.ABNORMAL);
...@@ -415,7 +420,10 @@ public class LoadingUtil { ...@@ -415,7 +420,10 @@ public class LoadingUtil {
return true; return true;
} }
private boolean PushToMes(String rfid, InList inList,List<StoragePos> posList) { private boolean PushToMes(String rfid, InList inList,List<StoragePos> posList ) {
return PushToMes(rfid,inList,posList,false);
}
private boolean PushToMes(String rfid, InList inList,List<StoragePos> posList,boolean manualFinish) {
for (InListItem item : inList.getInListItems()) { for (InListItem item : inList.getInListItems()) {
if (item.getRfid().equals(rfid) && item.getState() == INITEM_STATUS.Cancel && ObjectUtil.isNotEmpty(item.getRi())&&ObjectUtil.isNotEmpty(item.getPosName())) { if (item.getRfid().equals(rfid) && item.getState() == INITEM_STATUS.Cancel && ObjectUtil.isNotEmpty(item.getRi())&&ObjectUtil.isNotEmpty(item.getPosName())) {
...@@ -431,7 +439,11 @@ public class LoadingUtil { ...@@ -431,7 +439,11 @@ public class LoadingUtil {
List<InListItem> inListItems = new ArrayList<>(); List<InListItem> inListItems = new ArrayList<>();
boolean isEnd = true; boolean isEnd = true;
if (inList.getRfidList().size() < inList.getShelfNum()) { if(manualFinish){
inList.setManualFinish(manualFinish);
}
else if (inList.getRfidList().size() < inList.getShelfNum()) {
isEnd = false; isEnd = false;
} }
for (InListItem item : for (InListItem item :
...@@ -473,21 +485,14 @@ public class LoadingUtil { ...@@ -473,21 +485,14 @@ public class LoadingUtil {
} }
inList.setInListItems(inListItems); inList.setInListItems(inListItems);
if (isEnd) { if (isEnd) {
log.info("更新 入库单[" + inList.getName() + "] 状态改为 OK"); log.info("更新 入库单[" + inList.getName() + "] manualFinish=["+manualFinish+"] 状态改为 OK");
inList.setStatus(INLIST_STATUS.OK); inList.setStatus(INLIST_STATUS.OK);
} else { } else {
log.info("更新 入库单[" + inList.getName() + "] 状态改为 ABNORMAL"); log.info("更新 入库单[" + inList.getName() + "] manualFinish=["+manualFinish+"] 状态改为 ABNORMAL");
inList.setStatus(INLIST_STATUS.ABNORMAL); inList.setStatus(INLIST_STATUS.ABNORMAL);
} }
inList = inListManager.save(inList); inList = inListManager.save(inList);
inListCache.addInListToMap(inList); inListCache.addInListToMap(inList);
//判断是否全部完成
/*if (isEnd) {
log.info(" 入库单[" + inList.getName() + "]:任务已全部完成,清空当前loadinginfo");
dataCache.updateCache(Constants.CACHE_LOADING, new LoadingInfo());
}*/
return true; return true;
} }
public boolean Retry() { public boolean Retry() {
...@@ -571,4 +576,39 @@ public class LoadingUtil { ...@@ -571,4 +576,39 @@ public class LoadingUtil {
return ""; return "";
} }
public InList finish(InList inList) {
//如果没有任何入库信息,直接结束
if(inList.getRfidList().size()<=0&&inList.getInListItems().size()<=0){
inList.setManualFinish(true);
inList.setStatus(INLIST_STATUS.OK);
inList = inListManager.save(inList);
inListCache.addInListToMap(inList);
log.info("finish 入库单[" + inList.getName() + "] 手动结束,当前无任务,设置 manualFinish=true, 状态改为 OK");
return inList;
}
for (String rfid :
inList.getRfidList()) {
List<StoragePos> posList = new ArrayList<>();
//查找所有失败的重新推送
for (InListItem item : inList.getInListItems()) {
if (ObjectUtil.isEmpty(item.getPosName())) {
continue;
}
if (item.getRfid().equals(rfid) && item.getState() == INITEM_STATUS.Fail) {
StoragePos pos = storagePosManager.getByPosName(item.getPosName());
posList.add(pos);
} else if (item.getState() == INITEM_STATUS.PutEnd) {
StoragePos pos = storagePosManager.getByPosName(item.getPosName());
posList.add(pos);
}
}
if (posList.size() > 0) {
PushToMes(rfid, inList, posList);
}
}
return getInlist();
}
} }
...@@ -352,7 +352,7 @@ smfcore.expiration.ameExists=\u8FC7\u671F\u914D\u7F6E[{0}]\u5DF2\u5B58\u5728 ...@@ -352,7 +352,7 @@ smfcore.expiration.ameExists=\u8FC7\u671F\u914D\u7F6E[{0}]\u5DF2\u5B58\u5728
smfcore.expiration.notExist=\u8FC7\u671F\u914D\u7F6E[{0}]\u4E0D\u5B58\u5728 smfcore.expiration.notExist=\u8FC7\u671F\u914D\u7F6E[{0}]\u4E0D\u5B58\u5728
smfcore.micron.xray.offline={0}\u9700\u8981\u70B9\u6599\uFF0C\u70B9\u6599\u673A\u4E0D\u5728\u7EBF smfcore.micron.xray.offline={0}\u9700\u8981\u70B9\u6599\uFF0C\u70B9\u6599\u673A\u4E0D\u5728\u7EBF
smfcore.micron.nodata=\u672A\u627E\u5230\u4FE1\u606F smfcore.micron.nodata=\u672A\u627E\u5230\u4FE1\u606F
smfcore.api.fail={0} Failed to get data smfcore.api.fail={0} Failed to get data
smfcore.micron.apiClose=Not yet open smfcore.micron.apiClose=Not yet open
smfcore.api.error=api.error: error={0},message={1},detial={2} smfcore.api.error=api.error: error={0},message={1},detial={2}
smfcore.api.toXray={0}\u9700\u8981\u53BB\u70B9\u6599 smfcore.api.toXray={0}\u9700\u8981\u53BB\u70B9\u6599
...@@ -362,7 +362,8 @@ smfcore.error.barcode.hastask=\u6761\u7801[0]\u5DF2\u6709\u5165\u5E93\u4EFB\u52A ...@@ -362,7 +362,8 @@ smfcore.error.barcode.hastask=\u6761\u7801[0]\u5DF2\u6709\u5165\u5E93\u4EFB\u52A
smfcore.error.barcode.hasOutTask=\u5E8F\u5217\u53F7[0] \u5DF2\u6709\u51FA\u5E93\u4EFB\u52A1\uFF0C\u51FA\u5E93\u524D\u4E0D\u5F97\u5165\u5E93\u76F8\u540C\u5E8F\u5217\u53F7\u7269\u6599 smfcore.error.barcode.hasOutTask=\u5E8F\u5217\u53F7[0] \u5DF2\u6709\u51FA\u5E93\u4EFB\u52A1\uFF0C\u51FA\u5E93\u524D\u4E0D\u5F97\u5165\u5E93\u76F8\u540C\u5E8F\u5217\u53F7\u7269\u6599
smfcore.error.noRetryReel=No material found to retry smfcore.error.noRetryReel=No material found to retry
smfcore.micron.inlistCannotAbort=\u64CD\u4F5C\u5931\u8D25\uFF1A\u8FD8\u6709\u5165\u5E93\u4EFB\u52A1\u672A\u5B8C\u6210 smfcore.micron.inlistCannotAbort=\u64CD\u4F5C\u5931\u8D25\uFF1A\u8FD8\u6709\u5165\u5E93\u4EFB\u52A1\u672A\u5B8C\u6210
smfcore.micron.modeError=\u53C2\u6570\u9519\u8BEF {0} \u5165\u5E93\u8FD8\u672A\u5B8C\u6210 smfcore.micron.modeError= {0} \u5165\u5E93\u672A\u5B8C\u6210
smfcore.micron.inlisttaskNotEnd=\u64CD\u4F5C\u5931\u8D25\uFF1A\u5165\u5E93\u4EFB\u52A1{0}\u672A\u5B8C\u6210
#smfclient.nlp.onlyOneTray=\u4E0D\u53EF\u540C\u65F6\u653E\u5165\u591A\u76D8\u7269\u6599:{0} #smfclient.nlp.onlyOneTray=\u4E0D\u53EF\u540C\u65F6\u653E\u5165\u591A\u76D8\u7269\u6599:{0}
#smfclient.nlp.cannotFindPos={0}\u672A\u627E\u5230\u5E93\u4F4D:{1} #smfclient.nlp.cannotFindPos={0}\u672A\u627E\u5230\u5E93\u4F4D:{1}
#smfclient.nlp.inputOk={0}\u5165\u5E93\u5230{1}\u6210\u529F #smfclient.nlp.inputOk={0}\u5165\u5E93\u5230{1}\u6210\u529F
......
...@@ -361,4 +361,5 @@ smfcore.error.barcode.hastask=Serial No.(S)[0] already have storage task ...@@ -361,4 +361,5 @@ smfcore.error.barcode.hastask=Serial No.(S)[0] already have storage task
smfcore.error.barcode.hasOutTask=Serial No.(S)[0] already have retrieval task, cannot store same Serial No. material before retrieval finish smfcore.error.barcode.hasOutTask=Serial No.(S)[0] already have retrieval task, cannot store same Serial No. material before retrieval finish
smfcore.error.noRetryReel=No material found to retry smfcore.error.noRetryReel=No material found to retry
smfcore.micron.inlistCannotAbort=Operation failed: there are still inbound tasks to be completed smfcore.micron.inlistCannotAbort=Operation failed: there are still inbound tasks to be completed
smfcore.micron.modeError=Parameter error. {0} Incoming not finished.
\ No newline at end of file \ No newline at end of file
smfcore.micron.modeError= {0} Loading not finished.
smfcore.micron.inlisttaskNotEnd=Operation Failed: Task {0} Not Completed
\ No newline at end of file \ No newline at end of file
...@@ -356,4 +356,5 @@ smfcore.error.barcode.hastask=Serial No.(S)[0] already have storage task ...@@ -356,4 +356,5 @@ smfcore.error.barcode.hastask=Serial No.(S)[0] already have storage task
smfcore.error.barcode.hasOutTask=Serial No.(S)[0] already have retrieval task, cannot store same Serial No. material before retrieval finish smfcore.error.barcode.hasOutTask=Serial No.(S)[0] already have retrieval task, cannot store same Serial No. material before retrieval finish
smfcore.error.noRetryReel=No material found to retry smfcore.error.noRetryReel=No material found to retry
smfcore.micron.inlistCannotAbort=\u64CD\u4F5C\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF1A\u5B8C\u4E86\u3059\u3079\u304D\u53D7\u4FE1\u30BF\u30B9\u30AF\u304C\u6B8B\u3063\u3066\u3044\u307E\u3059 smfcore.micron.inlistCannotAbort=\u64CD\u4F5C\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF1A\u5B8C\u4E86\u3059\u3079\u304D\u53D7\u4FE1\u30BF\u30B9\u30AF\u304C\u6B8B\u3063\u3066\u3044\u307E\u3059
smfcore.micron.modeError=\u53C2\u6570\u9519\u8BEF {0} Loading \u8FD8\u672A\u5B8C\u6210
\ No newline at end of file \ No newline at end of file
smfcore.micron.modeError={0} \u5165\u5E93\u672A\u5B8C\u6210
smfcore.micron.inlisttaskNotEnd=\u64CD\u4F5C\u5931\u8D25\uFF1A\u5165\u5E93\u4EFB\u52A1{0}\u672A\u5B8C\u6210
\ No newline at end of file \ No newline at end of file
...@@ -356,4 +356,5 @@ smfcore.error.barcode.hastask=Serial No.(S)[0] already have storage task ...@@ -356,4 +356,5 @@ smfcore.error.barcode.hastask=Serial No.(S)[0] already have storage task
smfcore.error.barcode.hasOutTask=\u5E8F\u5217\u53F7[0] \u5DF2\u6709\u51FA\u5E93\u4EFB\u52A1\uFF0C\u51FA\u5E93\u524D\u4E0D\u5F97\u5165\u5E93\u76F8\u540C\u5E8F\u5217\u53F7\u7269\u6599 smfcore.error.barcode.hasOutTask=\u5E8F\u5217\u53F7[0] \u5DF2\u6709\u51FA\u5E93\u4EFB\u52A1\uFF0C\u51FA\u5E93\u524D\u4E0D\u5F97\u5165\u5E93\u76F8\u540C\u5E8F\u5217\u53F7\u7269\u6599
smfcore.error.noRetryReel=\u6CA1\u6709\u53EF\u4EE5\u91CD\u8BD5\u7684\u7269\u6599 smfcore.error.noRetryReel=\u6CA1\u6709\u53EF\u4EE5\u91CD\u8BD5\u7684\u7269\u6599
smfcore.micron.inlistCannotAbort=\u64CD\u4F5C\u5931\u8D25\uFF1A\u8FD8\u6709\u5165\u5E93\u4EFB\u52A1\u672A\u5B8C\u6210 smfcore.micron.inlistCannotAbort=\u64CD\u4F5C\u5931\u8D25\uFF1A\u8FD8\u6709\u5165\u5E93\u4EFB\u52A1\u672A\u5B8C\u6210
smfcore.micron.modeError=\u53C2\u6570\u9519\u8BEF {0} \u5165\u5E93\u8FD8\u672A\u5B8C\u6210
\ No newline at end of file \ No newline at end of file
smfcore.micron.modeError={0} \u5165\u5E93\u672A\u5B8C\u6210
smfcore.micron.inlisttaskNotEnd=\u64CD\u4F5C\u5931\u8D25\uFF1A\u5165\u5E93\u4EFB\u52A1{0}\u672A\u5B8C\u6210
\ No newline at end of file \ No newline at end of file
...@@ -357,4 +357,5 @@ smfcore.selfAudit.hasOutTask=\u5E93\u4F4D[{0}]\u5DF2\u6709\u51FA\u5E93\u4EFB\u52 ...@@ -357,4 +357,5 @@ smfcore.selfAudit.hasOutTask=\u5E93\u4F4D[{0}]\u5DF2\u6709\u51FA\u5E93\u4EFB\u52
smfcore.error.barcode.hasOutTask=\u5E8F\u5217\u865F[0] \u5DF2\u6709\u51FA\u5EAB\u4EFB\u52D9\uFF0C\u51FA\u5EAB\u524D\u4E0D\u5F97\u5165\u5EAB\u76F8\u540C\u5E8F\u5217\u865F\u7269\u6599 smfcore.error.barcode.hasOutTask=\u5E8F\u5217\u865F[0] \u5DF2\u6709\u51FA\u5EAB\u4EFB\u52D9\uFF0C\u51FA\u5EAB\u524D\u4E0D\u5F97\u5165\u5EAB\u76F8\u540C\u5E8F\u5217\u865F\u7269\u6599
smfcore.error.noRetryReel=\u6C92\u6709\u53EF\u4EE5\u91CD\u8A66\u7684\u7269\u6599 smfcore.error.noRetryReel=\u6C92\u6709\u53EF\u4EE5\u91CD\u8A66\u7684\u7269\u6599
smfcore.micron.inlistCannotAbort=\u64CD\u4F5C\u5931\u8D25\uFF1A\u8FD8\u6709\u5165\u5E93\u4EFB\u52A1\u672A\u5B8C\u6210 smfcore.micron.inlistCannotAbort=\u64CD\u4F5C\u5931\u8D25\uFF1A\u8FD8\u6709\u5165\u5E93\u4EFB\u52A1\u672A\u5B8C\u6210
smfcore.micron.modeError=\u53C2\u6570\u9519\u8BEF {0} \u5165\u5E93\u8FD8\u672A\u5B8C\u6210
\ No newline at end of file \ No newline at end of file
smfcore.micron.modeError={0} \u5165\u5E93\u672A\u5B8C\u6210
smfcore.micron.inlisttaskNotEnd=\u64CD\u4F5C\u5931\u8D25\uFF1A\u5165\u5E93\u4EFB\u52A1{0}\u672A\u5B8C\u6210
\ No newline at end of file \ No newline at end of file
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!