Commit e70c650d LN

料架扫码入库逻辑修改。

1 个父辈 e1cf2260
package com.neotel.smfcore.core.device.handler.impl;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.neotel.smfcore.common.bean.ResultBean;
......@@ -120,25 +121,34 @@ public class SensorShelfHandler extends BaseDeviceHandler {
}else{
Collection<DataLog> queueTasks = taskService.getQueueTasks();
for (DataLog queueTask : queueTasks) {
if(queueTask.isPutInTask() && queueTask.getGroupId().equals(groupId)){
queueTask.setCid(cid);
queueTask.setPosId(pos.getId());
queueTask.setPosName(pos.getPosName());
queueTask.setStorageId(pos.getStorageId());
queueTask.setStorageName(storage.getName());
try {
//入库完成,发送入库完成请求
super.finishedPutIn(cid,pos.getPosName());
inOkList.add(hasReelPosList[0]);
String msg = queueTask.getBarcode()+ "入库到"+ pos.getPosName()+"成功";
log.error(msg);
WebSocketServer.sendGroupMsg(groupId,new SocketMsg(msg, MsgType.INFO));
break;
} catch (Exception e) {
log.error("入库出错",e);
return ResultBean.newErrorResult(-1,"smfcore.inputError","入库出错:{0}" ,new String[]{ e.getMessage()});
boolean isPutInTask=false;
if(ObjectUtil.isNotEmpty(queueTask.getStorageId()) ){
if(queueTask.isPutInTask()&&queueTask.getStorageId().equals(storage.getId())){
isPutInTask=true;
}
}
else if(queueTask.isPutInTask() && queueTask.getGroupId().equals(groupId)) {
isPutInTask = true;
}
if(isPutInTask) {
queueTask.setCid(cid);
queueTask.setPosId(pos.getId());
queueTask.setPosName(pos.getPosName());
queueTask.setStorageId(pos.getStorageId());
queueTask.setStorageName(storage.getName());
try {
//入库完成,发送入库完成请求
super.finishedPutIn(cid, pos.getPosName());
inOkList.add(hasReelPosList[0]);
String msg = queueTask.getBarcode() + "入库到" + pos.getPosName() + "成功";
log.error(msg);
WebSocketServer.sendGroupMsg(groupId, new SocketMsg(msg, MsgType.INFO));
break;
} catch (Exception e) {
log.error("入库出错", e);
return ResultBean.newErrorResult(-1, "smfcore.inputError", "入库出错:{0}", new String[]{e.getMessage()});
}
}
}
if(inOkList.size() == 0){
inNgList.add(hasReelPosList[0]);
......
package com.neotel.smfcore.core.system.util;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
......@@ -160,7 +161,7 @@ public class TaskService {
if (!Strings.isNullOrEmpty(barcode) && task.getBarcode().equals(barcode)) {
log.info("二维码:[" + barcode + "]已在操作队列中,操作失败");
throw new ValidateException("smfcode.error.barcode.inQueue", "二维码[{0}]已在操作队列中,操作失败", new String[]{barcode});
} else if (task.getPosName().equals(posName)) {
} else if (task.getPosName().equals(posName)&& ObjectUtil.isNotEmpty(posName)) {
log.info("位置:[" + posName + "]已在操作队列中,操作失败");
throw new ValidateException("smfcode.error.pos.inQueue", "位置:[{0}}]已在操作队列中,操作失败", new String[]{posName});
}
......
package com.neotel.smfcore.hella.handler;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.collect.Lists;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.core.barcode.bean.CodeBean;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.manager.IComponentManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.barcode.service.po.Component;
import com.neotel.smfcore.core.barcode.utils.CodeResolve;
import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.util.DataCache;
......@@ -76,6 +79,9 @@ public class HellaServiceHandler extends IoHandlerAdapter implements ITaskListen
@Autowired
private IGroupManager groupManager;
@Autowired
private CodeResolve codeResolve;
protected final static Logger log = LogManager.getLogger();
private AtomicLong eventId = new AtomicLong(0);
......@@ -91,21 +97,38 @@ public class HellaServiceHandler extends IoHandlerAdapter implements ITaskListen
HellaReqCommand command = HellaReqCommand.newCheckMaterialCmd(eventId.incrementAndGet(),scannedCode);
command.setGroupId(groupId);
boolean storageCheckMaterial=false;
if(ObjectUtil.isNotEmpty(storageId)){
Storage storage=dataCache.getStorageById(storageId);
if(storage!=null){
storageCheckMaterial=true;
command.setGroupId(storage.getGroupId());
command.setStorageId(storageId);
}
}
command.setLoginUser(loginUser);
for (HellaReqCommand hellaReqCommand : commandMap.values()) {
if(hellaReqCommand.getGroupId().equals(groupId) && hellaReqCommand.isCheckMaterialReq()){
//有未完成的入库请求
commandMap.remove(hellaReqCommand.getEventId());
log.info("清理未完成的入库检查请求["+hellaReqCommand.getEventId()+"]:" + hellaReqCommand.getData());
//return ResultBean.newErrorResult(-1,"["+hellaReqCommand.getData()+"]入库任务未完成,无法入库");
if(storageCheckMaterial) {
if(ObjectUtil.isNotEmpty(hellaReqCommand.getStorageId())&&hellaReqCommand.getStorageId().equals(storageId)&&hellaReqCommand.isCheckMaterialReq()){
//有未完成的入库请求
commandMap.remove(hellaReqCommand.getEventId());
log.info("清理未完成的入库检查请求[" + hellaReqCommand.getEventId() + "]:" + hellaReqCommand.getData());
}
}else {
if (hellaReqCommand.getGroupId().equals(groupId) && hellaReqCommand.isCheckMaterialReq()) {
//有未完成的入库请求
commandMap.remove(hellaReqCommand.getEventId());
log.info("清理未完成的入库检查请求[" + hellaReqCommand.getEventId() + "]:" + hellaReqCommand.getData());
//return ResultBean.newErrorResult(-1,"["+hellaReqCommand.getData()+"]入库任务未完成,无法入库");
}
}
}
commandMap.put(command.getEventId(),command);
log.info("发送检查物料条码请求:" + command.toReqMsg());
ResultBean resultBean = HellaTcpClient.sendMsg(command.toReqMsg());
//testCheckOK(command);
//ResultBean resultBean = testCheckOK(command);
resultBean.setMsg("Check Material result:"+resultBean.getMsg());
return resultBean;
}
......@@ -248,16 +271,28 @@ public class HellaServiceHandler extends IoHandlerAdapter implements ITaskListen
private void testCheckOK(HellaReqCommand command) {
private ResultBean testCheckOK(HellaReqCommand command) {
HellaRespCommand respCommand = new HellaRespCommand();
respCommand.setCmd("TestCheckMaterial");
respCommand.setEventId(command.getEventId());
String reelId = command.getData().toString();
String[] resposArr = new String[]{"TestCheckMaterial",command.getEventId(),"0","OK","PN001",reelId,"1000","1","LC01"};
String codeStr = command.getData().toString();
CodeBean codeBean = codeResolve.resolveSingleCode(codeStr);
if(codeBean==null||codeBean.getBarcode()==null){
return ResultBean.newErrorResult(1,"smfcode.error.barcode.invalid","条码无效");
}
if(ObjectUtil.isNotEmpty(codeBean.getErrorCode()) ){
return ResultBean.newErrorResult(1,codeBean.getErrorCode(),codeBean.getError(),codeBean.getParams());
}
String pn=codeBean.getBarcode().getPartNumber();
String reelId=codeBean.getBarcode().getBarcode();
String num=codeBean.getBarcode().getAmount()+"";
String[] resposArr = new String[]{"TestCheckMaterial",command.getEventId(),"0","OK",pn,reelId,num,"1","LC01"};
try {
handleCheckMaterialResp(respCommand,resposArr);
return ResultBean.newOkResult("");
} catch (ValidateException e) {
log.error(e);
return ResultBean.newErrorResult(1,e.getMsgKey(),e.getDefaultMsg());
}
}
......@@ -277,6 +312,7 @@ public class HellaServiceHandler extends IoHandlerAdapter implements ITaskListen
return;
}
String groupId = requestCommand.getGroupId();
String storageId=requestCommand.getStorageId();
String loginUser = requestCommand.getLoginUser();
String fullCode = requestCommand.getData().toString();
if(respCommand.isOkResp()){
......@@ -326,8 +362,16 @@ public class HellaServiceHandler extends IoHandlerAdapter implements ITaskListen
dataLog.setNum(barcode.getAmount());
dataLog.setStatus(OP_STATUS.WAIT.name());
dataLog.setGroupId(groupId);
dataLog.setStorageId(storageId);
dataLog.setMemo(barcode.getMemo());
dataLog.setOperator(loginUser);
if(ObjectUtil.isNotEmpty(storageId)){
Storage storage=dataCache.getStorageById(storageId);
if(storage!=null){
dataLog.setCid(storage.getCid());
dataLog.setStorageName(storage.getName());
}
}
try{
taskService.addTaskToExecute(dataLog);
ResultBean okResult = ResultBean.newOkResult("checking material is ok: " + messageText);
......
package com.neotel.smfcore.hella.rest;
import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.SecurityUtils;
......@@ -91,7 +92,7 @@ public class HellaSensorShelfController {
for (DataLog queueTask : queueTasks) {
if (queueTask.isPutInTask() && queueTask.isWait()) {
if (groupId != null && queueTask.getGroupId().equals(groupId)) {
if (ObjectUtil.isEmpty(storageId)&& groupId != null && queueTask.getGroupId().equals(groupId)) {
log.info("codeIn [" + code + "][" + groupId + "]入库失败:条码[" + queueTask.getBarcode() + "]的任务还未结束 ");
throw new ValidateException("smfcore.unfinished", "the task of [{0}] is unfinished", new String[]{queueTask.getBarcode()});
}
......
......@@ -11,9 +11,13 @@ public class HellaReqCommand extends HellaCommand {
private String groupId;
/**
* 料仓Id;
* 用户名;
*/
private String loginUser;
/**
* 料仓ID
*/
private String storageId;
/**
* 检查物料条码
......@@ -65,4 +69,12 @@ public class HellaReqCommand extends HellaCommand {
public void setGroupId(String groupId) {
this.groupId = groupId;
}
public String getStorageId() {
return storageId;
}
public void setStorageId(String storageId) {
this.storageId = storageId;
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!