Commit 487e8abd LN

XLC料仓扫码入库BUG修改

1 个父辈 c3e77ded
...@@ -174,6 +174,7 @@ public class CodeResolve { ...@@ -174,6 +174,7 @@ public class CodeResolve {
component.setHeight(barcodeFromRule.getHeight()); component.setHeight(barcodeFromRule.getHeight());
component.setName(barcodeFromRule.getPartNumber()); component.setName(barcodeFromRule.getPartNumber());
component.setProvider(barcodeFromRule.getProvider()); component.setProvider(barcodeFromRule.getProvider());
component.setType(type);
componentManager.save(component); componentManager.save(component);
}else{ }else{
//如果 barcode 里的料盘信息比 Component 中的大,使用比较大的,防止放不进去撞击 //如果 barcode 里的料盘信息比 Component 中的大,使用比较大的,防止放不进去撞击
...@@ -181,6 +182,7 @@ public class CodeResolve { ...@@ -181,6 +182,7 @@ public class CodeResolve {
log.info("更新物料["+component.getPartNumber()+"]档案尺寸["+component.getPlateSize()+"x"+component.getHeight()+"]为["+codeBeanFromRule.getReelWidth()+"x"+codeBeanFromRule.getReelHeight()+"]"); log.info("更新物料["+component.getPartNumber()+"]档案尺寸["+component.getPlateSize()+"x"+component.getHeight()+"]为["+codeBeanFromRule.getReelWidth()+"x"+codeBeanFromRule.getReelHeight()+"]");
component.setPlateSize(barcodeFromRule.getPlateSize()); component.setPlateSize(barcodeFromRule.getPlateSize());
component.setHeight(barcodeFromRule.getHeight()); component.setHeight(barcodeFromRule.getHeight());
component.setType(type);
componentManager.save(component); componentManager.save(component);
} }
codeBeanFromRule.setShowImg(component.getShowImg()); codeBeanFromRule.setShowImg(component.getShowImg());
...@@ -259,7 +261,7 @@ public class CodeResolve { ...@@ -259,7 +261,7 @@ public class CodeResolve {
return null; return null;
} }
public Collection<CodeBean> resolveCodeStr(String codeStr){ private Collection<CodeBean> resolveCodeStr(String codeStr,int type){
List<CodeBean> codeBeans = Lists.newArrayList(); List<CodeBean> codeBeans = Lists.newArrayList();
//Map<String, CodeBean> codeBeanMap = Maps.newHashMap(); //Map<String, CodeBean> codeBeanMap = Maps.newHashMap();
if(!Strings.isNullOrEmpty(codeStr)){ if(!Strings.isNullOrEmpty(codeStr)){
...@@ -267,7 +269,7 @@ public class CodeResolve { ...@@ -267,7 +269,7 @@ public class CodeResolve {
String[] barcodeItemStrs = codeStr.split("##"); String[] barcodeItemStrs = codeStr.split("##");
for (String barcodeItemStr : barcodeItemStrs){ for (String barcodeItemStr : barcodeItemStrs){
CodeBean codeBean = resolveSingleCode(barcodeItemStr); CodeBean codeBean = resolveSingleCode(barcodeItemStr,type);
if(codeBean == null){ if(codeBean == null){
continue; continue;
} }
...@@ -314,17 +316,19 @@ public class CodeResolve { ...@@ -314,17 +316,19 @@ public class CodeResolve {
//return codeBeanMap.values(); //return codeBeanMap.values();
return codeBeans; return codeBeans;
} }
public Barcode resolveOneValideBarcode(String codeStr ) throws ValidateException{
return resolveOneValideBarcode(codeStr,COMPONENT_TYPE.COMPONENT);
}
/** /**
* 从条码信息中解析出一个有效条码 * 从条码信息中解析出一个有效条码
* @param codeStr * @param codeStr
* @return * @return
*/ */
public Barcode resolveOneValideBarcode(String codeStr) throws ValidateException{ public Barcode resolveOneValideBarcode(String codeStr,int type) throws ValidateException{
if(org.apache.logging.log4j.util.Strings.isBlank(codeStr)){ if(org.apache.logging.log4j.util.Strings.isBlank(codeStr)){
throw new ValidateException("smfcore.error.barcode.empty","未扫到条码"); throw new ValidateException("smfcore.error.barcode.empty","未扫到条码");
} }
Collection<CodeBean> codeBeans = resolveCodeStr(codeStr); Collection<CodeBean> codeBeans = resolveCodeStr(codeStr, type);
Barcode barcode = null; Barcode barcode = null;
String errorMsg = ""; String errorMsg = "";
for (CodeBean codeBean : codeBeans) { for (CodeBean codeBean : codeBeans) {
......
...@@ -23,6 +23,10 @@ import com.neotel.smfcore.core.device.enums.OP; ...@@ -23,6 +23,10 @@ import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS; import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.handler.IDeviceHandler; import com.neotel.smfcore.core.device.handler.IDeviceHandler;
import com.neotel.smfcore.core.device.util.DataCache; import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.order.LiteOrderCache;
import com.neotel.smfcore.core.order.enums.ORDER_COLOR;
import com.neotel.smfcore.core.order.service.po.LiteOrder;
import com.neotel.smfcore.core.order.service.po.LiteOrderItem;
import com.neotel.smfcore.core.storage.enums.DeviceType; import com.neotel.smfcore.core.storage.enums.DeviceType;
import com.neotel.smfcore.core.device.bean.StatusBean; import com.neotel.smfcore.core.device.bean.StatusBean;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager; import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
...@@ -38,6 +42,7 @@ import com.neotel.smfcore.core.system.service.po.Humiture; ...@@ -38,6 +42,7 @@ import com.neotel.smfcore.core.system.service.po.Humiture;
import com.neotel.smfcore.core.system.util.DevicesStatusUtil; import com.neotel.smfcore.core.system.util.DevicesStatusUtil;
import com.neotel.smfcore.core.system.util.TaskService; import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.security.service.manager.IGroupManager; import com.neotel.smfcore.security.service.manager.IGroupManager;
import lombok.Data;
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 org.springframework.stereotype.Service;
...@@ -82,6 +87,8 @@ public class BaseDeviceHandler implements IDeviceHandler { ...@@ -82,6 +87,8 @@ public class BaseDeviceHandler implements IDeviceHandler {
* 权限验证API列表 * 权限验证API列表
*/ */
protected List<IOpAuthApi> opAuthApiList = Lists.newArrayList(); protected List<IOpAuthApi> opAuthApiList = Lists.newArrayList();
@Autowired
protected LiteOrderCache liteOrderCache;
/** /**
* CID的服务器消息(key 为 cid) * CID的服务器消息(key 为 cid)
...@@ -225,15 +232,19 @@ public class BaseDeviceHandler implements IDeviceHandler { ...@@ -225,15 +232,19 @@ public class BaseDeviceHandler implements IDeviceHandler {
*/ */
protected StatusBean putInLine(Storage storage, StatusBean statusBean) { protected StatusBean putInLine(Storage storage, StatusBean statusBean) {
try { try {
int type=COMPONENT_TYPE.COMPONENT;
if(storage.isXLC()){
type=COMPONENT_TYPE.FIXTURE;
}
String codeStr = statusBean.getCode(); String codeStr = statusBean.getCode();
Barcode barcodeSave = codeResolve.resolveOneValideBarcode(codeStr); Barcode barcodeSave = codeResolve.resolveOneValideBarcode(codeStr,type);
//本地难条码是否可以入库 //本地难条码是否可以入库
verifyBarcodePutIn(Lists.<Storage>newArrayList(storage), barcodeSave); verifyBarcodePutIn(Lists.<Storage>newArrayList(storage), barcodeSave);
//从API验证 //从API验证
barcodeSave = verifyPutInFromApi(barcodeSave); barcodeSave = verifyPutInFromApi(barcodeSave);
if (barcodeSave == null) { if (barcodeSave == null) {
barcodeSave = codeResolve.resolveOneValideBarcode(codeStr); barcodeSave = codeResolve.resolveOneValideBarcode(codeStr,type);
} }
//查找库位,生成入库任务 //查找库位,生成入库任务
...@@ -770,6 +781,60 @@ public class BaseDeviceHandler implements IDeviceHandler { ...@@ -770,6 +781,60 @@ public class BaseDeviceHandler implements IDeviceHandler {
return statusBean; return statusBean;
} }
protected List<DataLog> getLightGuideTask(Map<String,List<DataLog>> outMap) {
List<DataLog> dataLogs = Lists.newArrayList();
if (outMap.size() <= 0) {
return dataLogs;
}
//先查找正在执行中的发过去
for (String sourceId :
outMap.keySet()) {
List<DataLog> dataLogList = outMap.get(sourceId);
boolean isFind = false;
for (DataLog dataLog : dataLogList
) {
if (dataLog.getStatus().equals(OP_STATUS.EXECUTING)) {
dataLogs.add(dataLog);
isFind = true;
break;
}
}
if (isFind) {
break;
}
//排序
LiteOrder order = liteOrderCache.getOrderSortItems(sourceId);
if (order == null) {
log.error("ACCSHELF: sourceId=" + sourceId + "的工单号未找到");
break;
}
for (LiteOrderItem item : order.getOrderItems()
) {
for (DataLog dataLog : dataLogList
) {
if (dataLog.getStatus().equals(OP_STATUS.WAIT)) {
if ((ObjectUtil.isNotEmpty(item.getPn()) && item.getPn().equals(dataLog.getPartNumber())) ||
(ObjectUtil.isNotEmpty(item.getRi()) && item.getRi().equals(dataLog.getBarcode()))
)
dataLog.setStatus(OP_STATUS.EXECUTING.name());
taskService.updateQueueTask(dataLog);
log.info("ACCSHELF: sourceId=" + sourceId + "的工单[" + order.getOrderNo() + "]开始执行任务:[" + dataLog.getPosName() + "][" + dataLog.getPartNumber() + "][" + dataLog.getBarcode() + "]");
dataLogs.add(dataLog);
isFind = true;
break;
}
}
}
if (isFind) {
break;
}
}
return dataLogs;
}
/** /**
* 判断是否打开了亮灯指引功能 * 判断是否打开了亮灯指引功能
* @return * @return
......
...@@ -144,6 +144,12 @@ public class XLCBoxHandler extends BaseDeviceHandler { ...@@ -144,6 +144,12 @@ public class XLCBoxHandler extends BaseDeviceHandler {
} }
@Override @Override
public StatusBean handleClientRequest(StatusBean statusBean, HttpServletRequest request) { public StatusBean handleClientRequest(StatusBean statusBean, HttpServletRequest request) {
String cid = statusBean.getCid();
Storage storage = dataCache.getStorage(cid);
if (storage == null) {
log.error("料仓cid: [" + cid + "]不存在");
return null;
}
handleMsg(statusBean); handleMsg(statusBean);
statusBean = saveAlarmAndHumidity(statusBean); statusBean = saveAlarmAndHumidity(statusBean);
statusBean = handleXLCStatusBean(statusBean); statusBean = handleXLCStatusBean(statusBean);
...@@ -152,6 +158,13 @@ public class XLCBoxHandler extends BaseDeviceHandler { ...@@ -152,6 +158,13 @@ public class XLCBoxHandler extends BaseDeviceHandler {
if(humidityResult != null){ if(humidityResult != null){
return humidityResult; return humidityResult;
} }
if (statusBean.getOp() == OP.PUT_IN) {
log.debug("入库:" + statusBean.toString());
statusBean = putInLine(storage, statusBean);
} else {
//查看是否有要出库的操作
statusBean =taskService.checkOut(storage, statusBean);
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!