Commit 6bc63691 sunke

西门子普通料架

1 个父辈 fe95fc30
...@@ -152,7 +152,7 @@ public class SmfApi { ...@@ -152,7 +152,7 @@ public class SmfApi {
} }
} }
return null; return barcode;
} }
public LiteOrder fetchOrder(String orderNumber, String username){ public LiteOrder fetchOrder(String orderNumber, String username){
......
...@@ -52,6 +52,9 @@ public class NLShelfHandler extends BaseDeviceHandler { ...@@ -52,6 +52,9 @@ public class NLShelfHandler extends BaseDeviceHandler {
@Autowired @Autowired
private InListCache inListCache; private InListCache inListCache;
String putInColor = "green";
int delayCloseTime = 30000;
@Override @Override
public StatusBean handleClientRequest(StatusBean statusBean, HttpServletRequest request) { public StatusBean handleClientRequest(StatusBean statusBean, HttpServletRequest request) {
statusBean.setClientIp(request.getRemoteHost()); statusBean.setClientIp(request.getRemoteHost());
...@@ -115,8 +118,9 @@ public class NLShelfHandler extends BaseDeviceHandler { ...@@ -115,8 +118,9 @@ public class NLShelfHandler extends BaseDeviceHandler {
String psession=sessionId.substring(sessionId.length()-10); String psession=sessionId.substring(sessionId.length()-10);
log.info( psession+ "关闭上一个操作库位:"+ posToClose.getPosName()); log.info( psession+ "关闭上一个操作库位:"+ posToClose.getPosName());
operateBean.setPosToClose(null); operateBean.setPosToClose(null);
operateBean.setOpPos(null);
shelfPutInBeanMap.put(sessionId, operateBean); shelfPutInBeanMap.put(sessionId, operateBean);
opPosLight("close", posToClose, "",false); opPosLight("close", posToClose, "");
} }
} }
...@@ -144,50 +148,54 @@ public class NLShelfHandler extends BaseDeviceHandler { ...@@ -144,50 +148,54 @@ public class NLShelfHandler extends BaseDeviceHandler {
* @param pos * @param pos
* @param colorStr * @param colorStr
*/ */
private void opPosLight(String opKey, StoragePos pos, String colorStr,boolean neeCheck){ private void opPosLight(String opKey, StoragePos pos, String colorStr){
String opStr = pos.getPosName(); String opStr = pos.getPosName();
if(!Strings.isNullOrEmpty(colorStr)){ if(!Strings.isNullOrEmpty(colorStr)){
opStr =opStr+ "=" + colorStr; opStr =opStr+ "=" + colorStr;
} }
Storage storage = dataCache.getStorageById(pos.getStorageId()); Storage storage = dataCache.getStorageById(pos.getStorageId());
if(neeCheck){
//判断库位是否有料,若已有料,不需要处理
StoragePos newPos=storagePosManager.get(pos.getId());
if(newPos.getBarcode()!=null){
log.info("自动关闭库位:"+ pos.getPosName()+"时,库位已有料,不需要处理自动关闭");
return;
}else{
log.info("自动关闭库位:"+ pos.getPosName());
}
}
DevicesStatusUtil.appendOp(storage.getCid(), opKey , opStr); DevicesStatusUtil.appendOp(storage.getCid(), opKey , opStr);
//log.info("操作库位["+pos.getPosName()+"]" + opKey + " : " + opStr); log.info("操作库位["+pos.getPosName()+"]" + opKey + " : " + opStr);
} }
/** /**
* 开灯, 等30秒后关闭 * 开灯, 等30秒后关闭
*/ */
private void openAndCloseLights(final String sessionId, final StoragePos pos, String color, final long delayCloseTime){ private void openAndCloseLights(final String token, final StoragePos pos, String color, final long delayCloseTime){
if(pos == null){ if(pos == null){
return; return;
} }
final Storage storage = dataCache.getStorageById(pos.getStorageId()); opPosLight("open",pos, color);
final String cid = storage.getCid();
String lightOnStr = pos.getPosName() + "=" + color;
DevicesStatusUtil.appendOp(cid,"open", lightOnStr);
log.info("点亮库位:" + lightOnStr);
//30秒后灭灯 //30秒后灭灯
Thread closeTask = new Thread(new Runnable() { Thread closeTask = new Thread(new Runnable() {
@Override @Override
public void run() { public void run() {
try { try {
Thread.sleep(delayCloseTime); Thread.sleep(delayCloseTime);
// log.info("自动关闭库位:"+ pos.getPosName()); NLShelfOperateBean operateBean = getOperateBean(token);
opPosLight("close", pos, "",true); StoragePos posToClose = operateBean.getPosToClose();
}catch (Exception e){ if(posToClose != null && posToClose.getPosName().equals(pos.getPosName())){
boolean autoClose = true;
Collection<DataLog> queueTasks = taskService.getQueueTasks();
for (DataLog queueTask : queueTasks) {
//如果有同一个库位正在执行的任务就不关闭了
if(queueTask.getPosName().equals(posToClose.getPosName())){
if(queueTask.isCheckOutTask()){
autoClose = false;
}
}
}
if(autoClose){
log.info("自动关闭库位:"+ posToClose.getPosName());
opPosLight("close", posToClose, "");
operateBean.setOpPos(null);
operateBean.setPosToClose(null);
shelfPutInBeanMap.put(token, operateBean);
}
}
}catch (Exception e){
log.error("自动关闭库位灯出错:" + e.getMessage());
} }
} }
}); });
...@@ -234,6 +242,7 @@ public class NLShelfHandler extends BaseDeviceHandler { ...@@ -234,6 +242,7 @@ public class NLShelfHandler extends BaseDeviceHandler {
String token = tokenProvider.getToken(request); String token = tokenProvider.getToken(request);
String ptoken=token.substring(token.length()-10); String ptoken=token.substring(token.length()-10);
String loginUser = SecurityUtils.getLoginUsername(); String loginUser = SecurityUtils.getLoginUsername();
log.info(storageId + "扫到条码["+code+"]" );
if (ObjectUtils.isEmpty(code)) { if (ObjectUtils.isEmpty(code)) {
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"code"}); throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"code"});
} }
...@@ -251,8 +260,6 @@ public class NLShelfHandler extends BaseDeviceHandler { ...@@ -251,8 +260,6 @@ public class NLShelfHandler extends BaseDeviceHandler {
if (groupId != null && groupId.equals("-1")) { if (groupId != null && groupId.equals("-1")) {
groupId = ""; groupId = "";
} }
int delayCloseTime = 30000;
String putInColor = "green";
StoragePos pos = storagePosManager.getByPosName(code); StoragePos pos = storagePosManager.getByPosName(code);
if(pos==null){ if(pos==null){
...@@ -264,9 +271,11 @@ public class NLShelfHandler extends BaseDeviceHandler { ...@@ -264,9 +271,11 @@ public class NLShelfHandler extends BaseDeviceHandler {
} }
} }
if (pos != null) { if (pos != null) {
//扫描的为库位条码,先关掉上一个库位灯, 当前库位中没有物料的话点亮库位灯
closeLastPos(token);
//判断库位是否是对应设备或者租 //判断库位是否是对应设备或者租
if (currentStorage != null) { if (currentStorage != null) {
if ( ! pos.getStorageId().equals(storageId)) { if (!pos.getStorageId().equals(storageId)) {
return ResultBean.newErrorResult(1, "smfcore.shelf.pos.notInStorage", "料架[{0}]中未找到库位[{1}]", new String[]{currentStorage.getName(), pos.getPosName()}); return ResultBean.newErrorResult(1, "smfcore.shelf.pos.notInStorage", "料架[{0}]中未找到库位[{1}]", new String[]{currentStorage.getName(), pos.getPosName()});
} }
} else { } else {
...@@ -278,8 +287,6 @@ public class NLShelfHandler extends BaseDeviceHandler { ...@@ -278,8 +287,6 @@ public class NLShelfHandler extends BaseDeviceHandler {
return ResultBean.newErrorResult(1, "smfcore.shelf.pos.notInGroup", "组中未找到库位[{0}]", new String[]{pos.getPosName()}); return ResultBean.newErrorResult(1, "smfcore.shelf.pos.notInGroup", "组中未找到库位[{0}]", new String[]{pos.getPosName()});
} }
} }
//扫描的为库位条码,先关掉上一个库位灯, 当前库位中没有物料的话点亮库位灯
closeLastPos(token);
if (pos.getBarcode() != null) { if (pos.getBarcode() != null) {
return ResultBean.newErrorResult(1, "smfcore.shelf.msg.hasReel", "库位中[{0}]已有物料", new String[]{pos.getPosName()}); return ResultBean.newErrorResult(1, "smfcore.shelf.msg.hasReel", "库位中[{0}]已有物料", new String[]{pos.getPosName()});
} else { } else {
...@@ -288,144 +295,109 @@ public class NLShelfHandler extends BaseDeviceHandler { ...@@ -288,144 +295,109 @@ public class NLShelfHandler extends BaseDeviceHandler {
NLShelfOperateBean operateBean = getOperateBean(token); NLShelfOperateBean operateBean = getOperateBean(token);
operateBean.setOpPos(pos); operateBean.setOpPos(pos);
operateBean.setPosToClose(pos); operateBean.setPosToClose(pos);
operateBean.setNextPosId(null);
shelfPutInBeanMap.put(token, operateBean); shelfPutInBeanMap.put(token, operateBean);
log.info(ptoken + ":库位[" + pos.getPosName() + "]操作成功,请扫描要放入的物料"); log.info(ptoken + ":库位[" + pos.getPosName() + "]操作成功,请扫描要放入的物料");
return ResultBean.newOkResult("smfcore.shelf.msg.tipScanReel", "库位[" + pos.getPosName() + "]操作成功,请扫描要放入的物料", new String[]{pos.getPosName()},pos.getPosName()); return ResultBean.newOkResult("smfcore.shelf.msg.tipScanReel", "库位[" + pos.getPosName() + "]操作成功,请扫描要放入的物料", new String[]{pos.getPosName()},pos.getPosName());
} }
} else { } else {
//扫的是物料条码 //先判断库存中有没有此条码
Barcode barcode = codeResolve.resolveOneValideBarcode("=1x1=" + code); ResultBean resultBean = outProcess(code,sourceId, loginUser);
Date expireDate = barcode.getExpireDate(); if(resultBean != null){
if (expireDate != null) { return resultBean;
if (System.currentTimeMillis() > expireDate.getTime()) {
throw new ValidateException("smfcore.error.barcode.expired", "物料已过期,无法入库.");
}
} }
resultBean = putInProcess(code, token, loginUser);
if(resultBean != null){
return resultBean;
}
}
return ResultBean.newOkResult("");
}
try { private ResultBean outProcess(String code, String sourceId, String loginUser){
// if(barcode.getPlateSize() == 1){ StoragePos inPos = storagePosManager.getByBarcode(code);
// //长宽为1的需要弹框设置尺寸 if (inPos != null) {
// throw new ValidateException("error.barcode.errorSize","条码未设置尺寸"); Collection<DataLog> allTasks = taskService.getQueueTasks();
// } for (DataLog task : allTasks) {
long now = System.currentTimeMillis(); if (task.isCheckOutTask() && task.getBarcode() != null && task.getBarcode().equals(code)) {
//5秒内同一个条码忽略 if(ObjectUtil.isNotEmpty(sourceId) && !sourceId.equals(task.getSourceId())) {
Date usedDate = barcode.getUsedDate(); LiteOrder liteOrder = liteOrderManager.get(sourceId);
if (usedDate != null && now - usedDate.getTime() < 5000) { if (liteOrder != null) {
return ResultBean.newErrorResult(1, "smfcore.shelf.msg.fastop", "条码操作频繁,请稍后再试"); return ResultBean.newErrorResult(1, "smfcore.shelf.error.orderError", "任务与指定工单[{0}]不一致", new String[]{liteOrder.getOrderNo()});
}
} else {
StoragePos inPos = storagePosManager.getByBarcodeId(barcode.getId()); return ResultBean.newErrorResult(1, "smfcore.shelf.error.orderError", "任务与指定工单[{0}]不一致", new String[]{sourceId});
if (inPos != null) {
Collection<DataLog> allTasks = taskService.getQueueTasks();
for (DataLog task : allTasks) {
if (task.isCheckOutTask() && task.getBarcode() != null && task.getBarcode().equals(barcode.getBarcode())) {
if(ObjectUtil.isNotEmpty(sourceId) && !sourceId.equals(task.getSourceId())) {
LiteOrder liteOrder = liteOrderManager.get(sourceId);
if (liteOrder != null) {
return ResultBean.newErrorResult(1, "smfcore.shelf.error.orderError", "任务与指定工单[{0}]不一致", new String[]{liteOrder.getOrderNo()});
} else {
return ResultBean.newErrorResult(1, "smfcore.shelf.error.orderError", "任务与指定工单[{0}]不一致", new String[]{sourceId});
}
}
taskService.addTaskToFinished(inPos, null, loginUser);
opPosLight("close", inPos, null,false);
log.info(barcode.getBarcode() + " 出库完成, 库位[" + inPos.getPosName() + "]灭灯");
return ResultBean.newOkResult( "smfcore.shelf.msg.outConfirm", "出库完成, 库位[{0}]灭灯", new String[]{inPos.getPosName()} );
} }
} }
return ResultBean.newErrorResult(1, "smfcore.shelf.msg.noTask", "操作失败,已在库位[{0}]中,未找到对应的出库任务", new String[]{inPos.getPosName()}); taskService.addTaskToFinished(inPos, null, loginUser);
opPosLight("close", inPos, "");
log.info(code + " 出库完成, 库位[" + inPos.getPosName() + "]灭灯");
return ResultBean.newOkResult( "smfcore.shelf.msg.outConfirm", "出库完成, 库位[{0}]灭灯", new String[]{inPos.getPosName()} );
} }
}
return ResultBean.newErrorResult(1, "smfcore.shelf.msg.noTask", "操作失败,已在库位[{0}]中,未找到对应的出库任务", new String[]{inPos.getPosName()});
}
return null;
}
private ResultBean putInProcess(String code, String token,String loginUser){
String barcodeStr = "=1x1=" + code;
//扫的是物料条码
Barcode barcode = smfApi.canPutInBeforeResolve(barcodeStr);
if(barcode == null){
barcode = codeResolve.resolveOneValideBarcode(barcodeStr);
}
barcode = smfApi.canPutInAfterResolve(barcode);
if(barcode == null){
throw new ValidateException("smfcore.error.barcode.invalid", "{0}不是有效的条码",new String[]{code});
}
Date expireDate = barcode.getExpireDate();
if (expireDate != null) {
if (System.currentTimeMillis() > expireDate.getTime()) {
throw new ValidateException("smfcore.error.barcode.expired", "物料已过期,无法入库.");
}
}
//入库 try {
NLShelfOperateBean operateBean = getOperateBean(token); long now = System.currentTimeMillis();
StoragePos opPos = operateBean.getOpPos(); //5秒内同一个条码忽略
currentStorage=dataCache.getStorageById(opPos.getStorageId()); Date usedDate = barcode.getUsedDate();
if (opPos == null) { if (usedDate != null && now - usedDate.getTime() < 5000) {
//未扫描库位 return ResultBean.newErrorResult(1, "smfcore.shelf.msg.fastop", "条码操作频繁,请稍后再试");
String operatePosId = operateBean.getNextPosId(); }
if (Strings.isNullOrEmpty(operatePosId)) {
log.info(ptoken + ":条码[" +code+ "],请先扫描库位码");
return ResultBean.newErrorResult(1, "smfcore.shelf.msg.scanPos", "请先扫描库位码");
} else {
//有下一个库位
StoragePos currentPos = storagePosManager.get(String.valueOf(operatePosId));
if (currentPos != null) {
//入库单验证
ResultBean resultBean= inListCache.inListValidate(currentStorage.getInListName(),barcode.getPartNumber() );
if(!resultBean.isOkResult()){
return resultBean;
}
canBarcodePutInPos(currentPos, barcode);
//验证通过,先灭上一个库位灯
closeLastPos(token);
//打开下一个库位灯
openAndCloseLights(token, currentPos, putInColor, delayCloseTime);
taskService.addTaskToFinished(currentPos, barcode, loginUser);
operateBean.setOpPos(null);
operateBean.setPosToClose(currentPos);
Collection<String> operatingPosIds = taskService.excludePosIds();
StoragePos nextPos = storagePosManager.autoFindNextEmptyPos(currentStorage, operatingPosIds, currentPos);
String nextPosId = nextPos == null ? "null" : nextPos.getId() + "[" + nextPos.getPosName() + "]";
String data=nextPos == null ? "" : nextPos.getPosName();
//
operateBean.setNextPosId(null);
if (nextPos != null) {
operateBean.setNextPosId(nextPos.getId());
}
shelfPutInBeanMap.put(token, operateBean);
log.info(ptoken + ":条码[" + code + "]入库操作成功,请放入库位 [" + currentPos.getPosName() + "],下一个库位号:" + nextPosId);
return ResultBean.newOkResult("smfcore.shelf.msg.inOk", "操作成功,请放入库位[" + currentPos.getPosName() + "]", new String[]{currentPos.getPosName()}, data);
} String ptoken=token.substring(token.length()-10);
}
} else {
//入库单验证
ResultBean resultBean= inListCache.inListValidate(currentStorage.getInListName(),barcode.getPartNumber() );
if(!resultBean.isOkResult()){
return resultBean;
}
//已扫过库位
canBarcodePutInPos(opPos, barcode);
log.info(barcode.getPartNumber() + " [ " + barcode.getBarcode() + " ] " + "入库到:" + opPos.getPosName());
opPos.setCanCheckOutTime(System.currentTimeMillis() + delayCloseTime);
taskService.addTaskToFinished(opPos, barcode, loginUser);
//放入后不需要灭灯,也不需要亮灯,等下一个条码扫到时再灭灯
operateBean.setOpPos(null);
// Long nextPosId = Long.valueOf(opPos.getId()) + 1;
// operateBean.setNextPosId(String.valueOf(nextPosId));
// shelfPutInBeanMap.put(token, operateBean);
Collection<String> operatingPosIds = taskService.excludePosIds();
StoragePos nextPos = storagePosManager.autoFindNextEmptyPos(currentStorage, operatingPosIds, opPos);
String nextPosId = nextPos == null ? "null" : nextPos.getId() + "[" + nextPos.getPosName() + "]";
String data=nextPos == null ? "" : nextPos.getPosName();
//
operateBean.setNextPosId(null);
if (nextPos != null) {
operateBean.setNextPosId(nextPos.getId());
}
shelfPutInBeanMap.put(token, operateBean);
log.info(ptoken + ":条码["+code+"]入库操作成功,请放入库位 ["+opPos.getPosName()+"],下一个库位号:" + nextPosId);
return ResultBean.newOkResult("smfcore.shelf.msg.inOk", "操作成功,请放入库位["+opPos.getPosName()+"]", new String[]{opPos.getPosName()},data);
//入库
NLShelfOperateBean operateBean = getOperateBean(token);
StoragePos opPos = operateBean.getOpPos();
if (opPos == null) {
//未扫描库位
log.info(ptoken + ":条码[" +code+ "],请先扫描库位码");
return ResultBean.newErrorResult(1, "smfcore.shelf.msg.scanPos", "请先扫描库位码");
} else {
Storage currentStorage=dataCache.getStorageById(opPos.getStorageId());
//入库单验证
ResultBean resultBean= inListCache.inListValidate(currentStorage.getInListName(),barcode.getPartNumber() );
if(!resultBean.isOkResult()){
return resultBean;
} }
} catch (ValidateException e) { //已扫过库位
log.error("Error:" + e.getMessage()); canBarcodePutInPos(opPos, barcode);
return ResultBean.newErrorResult(1, e.getMessage(), e.getMessage(), e.getMsgParam()); log.info(barcode.getPartNumber() + " [ " + barcode.getBarcode() + " ] " + "入库到:" + opPos.getPosName());
opPos.setCanCheckOutTime(System.currentTimeMillis() + delayCloseTime);
taskService.addTaskToFinished(opPos, barcode, loginUser);
//放入后不需要灭灯,也不需要亮灯,等下一个条码扫到时再灭灯
operateBean.setOpPos(null);
shelfPutInBeanMap.put(token, operateBean);
log.info(ptoken + ":条码["+code+"]入库操作成功,请放入库位 ["+opPos.getPosName()+"]" );
return ResultBean.newOkResult("smfcore.shelf.msg.inOk", "操作成功,请放入库位["+opPos.getPosName()+"]", new String[]{opPos.getPosName()},"");
} }
} catch (ValidateException e) {
log.error("Error:" + e.getMessage());
return ResultBean.newErrorResult(1, e.getMessage(), e.getMessage(), e.getMsgParam());
} }
return ResultBean.newOkResult("");
} }
/** /**
* 获取料架的库位占用情况 * 获取料架的库位占用情况
*/ */
......
...@@ -132,12 +132,16 @@ public class MaterialController { ...@@ -132,12 +132,16 @@ public class MaterialController {
Sort.Order partNumberOrder = pageable.getSort().getOrderFor("partNumber"); Sort.Order partNumberOrder = pageable.getSort().getOrderFor("partNumber");
if(partNumberOrder != null){ if(partNumberOrder != null){
comparator = Comparator.comparing(InventoryItemDto::getPartNumber,Comparator.nullsFirst(String::compareTo)); comparator = Comparator.comparing(InventoryItemDto::getPartNumber,Comparator.nullsFirst(String::compareTo));
if(stockCountOrder.isDescending()){ if(partNumberOrder.isDescending()){
comparator = comparator.reversed(); comparator = comparator.reversed();
} }
} }
resultList = resultList.stream().sorted(comparator).collect(Collectors.toList()); resultList = resultList.stream().sorted(comparator).collect(Collectors.toList());
// System.out.println("================");
// for (InventoryItemDto dto : resultList) {
// System.out.println(dto.getPartNumber() + "---" + dto.getStockCount() + " --- " + dto.getStockReel());
// }
return resultList; return resultList;
} }
......
...@@ -176,12 +176,14 @@ public class TaskService { ...@@ -176,12 +176,14 @@ public class TaskService {
for (DataLog task : tasks) { for (DataLog task : tasks) {
String barcode = taskToExecute.getBarcode(); String barcode = taskToExecute.getBarcode();
String posName = taskToExecute.getPosName(); String posName = taskToExecute.getPosName();
if (!Strings.isNullOrEmpty(barcode) && task.getBarcode().equals(barcode)) { if(task.getType() == taskToExecute.getType()){
log.info("二维码:[" + barcode + "]已在操作队列中,操作失败"); if (!Strings.isNullOrEmpty(barcode) && task.getBarcode().equals(barcode)) {
throw new ValidateException("smfcore.error.barcode.inQueue", "二维码[{0}]已在操作队列中,操作失败", new String[]{barcode}); log.info("二维码:[" + barcode + "]已在操作队列中,操作失败");
} else if (task.getPosName().equals(posName)&& ObjectUtil.isNotEmpty(posName)) { throw new ValidateException("smfcore.error.barcode.inQueue", "二维码[{0}]已在操作队列中,操作失败", new String[]{barcode});
log.info("位置:[" + posName + "]已在操作队列中,操作失败"); } else if (task.getPosName().equals(posName)&& ObjectUtil.isNotEmpty(posName)) {
throw new ValidateException("smfcore.error.pos.inQueue", "位置:[{0}}]已在操作队列中,操作失败", new String[]{posName}); log.info("位置:[" + posName + "]已在操作队列中,操作失败");
throw new ValidateException("smfcore.error.pos.inQueue", "位置:[{0}}]已在操作队列中,操作失败", new String[]{posName});
}
} }
} }
updateQueueTask(taskToExecute); updateQueueTask(taskToExecute);
......
...@@ -21,13 +21,11 @@ import java.util.HashMap; ...@@ -21,13 +21,11 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
/** /**
* Siemens * api:
* #host: "140.231.193.101" * name: Siemens
* port: * inCheckUrl: http://cnctu04053:8014/api/JsonC
* #url: "http://cnctu04053:8014/api/JsonC" * outNotifyUrl: http://cnctu04053:8014/api/JsonC
* #url_checkIn: "http://cnctu04053:8014/api/JsonC" * inNotifyUrl: http://cnctu04053:8014/api/JsonC
* #url: "http://cnctu041p059:8014/api/JsonC"
* #url: "http://cnctu04053:8014/api/JsonC"
* *
* action: * action:
* GetMaterialLot: "http://siplace.com/facts/materiallot/2010/01/MaterialLot/GetMaterialLot" * GetMaterialLot: "http://siplace.com/facts/materiallot/2010/01/MaterialLot/GetMaterialLot"
...@@ -72,7 +70,6 @@ public class SiemensApi extends BaseSmfApiListener { ...@@ -72,7 +70,6 @@ public class SiemensApi extends BaseSmfApiListener {
private static boolean lotInOut(String url, String lot,int inoutType) { private static boolean lotInOut(String url, String lot,int inoutType) {
//String url=config.url; //String url=config.url;
if (ObjectUtil.isEmpty(url)) { if (ObjectUtil.isEmpty(url)) {
log.info("没有配置Siemens,无需通知"); log.info("没有配置Siemens,无需通知");
...@@ -129,13 +126,15 @@ public class SiemensApi extends BaseSmfApiListener { ...@@ -129,13 +126,15 @@ public class SiemensApi extends BaseSmfApiListener {
@Override @Override
public Barcode canPutInBeforeResolve(String inCheckUrl, String codeStr) throws ValidateException { public Barcode canPutInBeforeResolve(String inCheckUrl, String codeStr) throws ValidateException {
if (ObjectUtil.isEmpty(inCheckUrl)) {
log.info("没有配置Siemens,无需验证");
return null;
}
try { try {
Collection<CodeBean> codeBeans = codeResolve.resolveCodeStr(codeStr, COMPONENT_TYPE.COMPONENT); Collection<CodeBean> codeBeans = codeResolve.resolveCodeStr(codeStr, COMPONENT_TYPE.COMPONENT);
boolean ok = false;
for (CodeBean codebean : codeBeans) { for (CodeBean codebean : codeBeans) {
if (codebean.hasReelSizeInfo()) { if (codebean.hasReelSizeInfo()) {
LotCheckInfo info = lotCheckIn(codebean.getCodeStr()); LotCheckInfo info = lotCheckIn(codebean.getCodeStr(),inCheckUrl);
if (info != null && info.isStatus() && ObjectUtil.isNotEmpty(info.getPartnum()) && ObjectUtil.isNotEmpty(info.getQuantity())) { if (info != null && info.isStatus() && ObjectUtil.isNotEmpty(info.getPartnum()) && ObjectUtil.isNotEmpty(info.getQuantity())) {
//查找元器件是否存在 //查找元器件是否存在
com.neotel.smfcore.core.barcode.service.po.Component component = componentManager.findOneByPN(info.getPartnum()); com.neotel.smfcore.core.barcode.service.po.Component component = componentManager.findOneByPN(info.getPartnum());
...@@ -155,7 +154,7 @@ public class SiemensApi extends BaseSmfApiListener { ...@@ -155,7 +154,7 @@ public class SiemensApi extends BaseSmfApiListener {
} }
//判断条码是否存在 //判断条码是否存在
Barcode barcode = barcodeManager.get(codebean.getCodeStr()); Barcode barcode = barcodeManager.findByBarcode(codebean.getCodeStr());
if (barcode == null) { if (barcode == null) {
barcode = new Barcode(); barcode = new Barcode();
barcode.setPlateSize(component.getPlateSize()); barcode.setPlateSize(component.getPlateSize());
...@@ -179,15 +178,14 @@ public class SiemensApi extends BaseSmfApiListener { ...@@ -179,15 +178,14 @@ public class SiemensApi extends BaseSmfApiListener {
} }
} }
throw new ValidateException("siemens.barcode.failed","SIEMENS条码验证失败");
} catch (Exception ex) { } catch (Exception ex) {
log.info("siemensCheckCode 验证条码 [" + codeStr + "] 出错:", ex); log.info("siemensCheckCode 验证条码 [" + codeStr + "] 出错:", ex);
throw new ValidateException("siemens.barcode.error","SIEMENS条码验证出错:" + ex.getMessage());
} }
return null;
} }
public static LotCheckInfo lotCheckIn(String lot) { public static LotCheckInfo lotCheckIn(String lot, String url) {
//String url = config.url_checkIn;
String url = "";
if (ObjectUtil.isEmpty(url)) { if (ObjectUtil.isEmpty(url)) {
log.info("没有配置Siemens,无需验证"); log.info("没有配置Siemens,无需验证");
return null; return null;
......
...@@ -40,10 +40,16 @@ public class LotCheckInfo implements Serializable { ...@@ -40,10 +40,16 @@ public class LotCheckInfo implements Serializable {
lotCheckInfo.setCode(map.get("Code").toString()); lotCheckInfo.setCode(map.get("Code").toString());
} }
if (map.containsKey("partnum")) { if (map.containsKey("partnum")) {
lotCheckInfo.setPartnum(map.get("partnum").toString()); Object partnum = map.get("partnum");
if(partnum != null){
lotCheckInfo.setPartnum(partnum.toString());
}
} }
if (map.containsKey("quantity")) { if (map.containsKey("quantity")) {
lotCheckInfo.setQuantity(Integer.parseInt(map.get("quantity").toString())); Object quantity = map.get("quantity");
if(quantity != null){
lotCheckInfo.setQuantity(Integer.parseInt(quantity.toString()));
}
} }
return lotCheckInfo; return lotCheckInfo;
} }
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!