Commit 487e8abd LN

XLC料仓扫码入库BUG修改

1 个父辈 c3e77ded
......@@ -174,6 +174,7 @@ public class CodeResolve {
component.setHeight(barcodeFromRule.getHeight());
component.setName(barcodeFromRule.getPartNumber());
component.setProvider(barcodeFromRule.getProvider());
component.setType(type);
componentManager.save(component);
}else{
//如果 barcode 里的料盘信息比 Component 中的大,使用比较大的,防止放不进去撞击
......@@ -181,6 +182,7 @@ public class CodeResolve {
log.info("更新物料["+component.getPartNumber()+"]档案尺寸["+component.getPlateSize()+"x"+component.getHeight()+"]为["+codeBeanFromRule.getReelWidth()+"x"+codeBeanFromRule.getReelHeight()+"]");
component.setPlateSize(barcodeFromRule.getPlateSize());
component.setHeight(barcodeFromRule.getHeight());
component.setType(type);
componentManager.save(component);
}
codeBeanFromRule.setShowImg(component.getShowImg());
......@@ -259,7 +261,7 @@ public class CodeResolve {
return null;
}
public Collection<CodeBean> resolveCodeStr(String codeStr){
private Collection<CodeBean> resolveCodeStr(String codeStr,int type){
List<CodeBean> codeBeans = Lists.newArrayList();
//Map<String, CodeBean> codeBeanMap = Maps.newHashMap();
if(!Strings.isNullOrEmpty(codeStr)){
......@@ -267,7 +269,7 @@ public class CodeResolve {
String[] barcodeItemStrs = codeStr.split("##");
for (String barcodeItemStr : barcodeItemStrs){
CodeBean codeBean = resolveSingleCode(barcodeItemStr);
CodeBean codeBean = resolveSingleCode(barcodeItemStr,type);
if(codeBean == null){
continue;
}
......@@ -314,17 +316,19 @@ public class CodeResolve {
//return codeBeanMap.values();
return codeBeans;
}
public Barcode resolveOneValideBarcode(String codeStr ) throws ValidateException{
return resolveOneValideBarcode(codeStr,COMPONENT_TYPE.COMPONENT);
}
/**
* 从条码信息中解析出一个有效条码
* @param codeStr
* @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)){
throw new ValidateException("smfcore.error.barcode.empty","未扫到条码");
}
Collection<CodeBean> codeBeans = resolveCodeStr(codeStr);
Collection<CodeBean> codeBeans = resolveCodeStr(codeStr, type);
Barcode barcode = null;
String errorMsg = "";
for (CodeBean codeBean : codeBeans) {
......
......@@ -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.handler.IDeviceHandler;
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.device.bean.StatusBean;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
......@@ -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.TaskService;
import com.neotel.smfcore.security.service.manager.IGroupManager;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -82,6 +87,8 @@ public class BaseDeviceHandler implements IDeviceHandler {
* 权限验证API列表
*/
protected List<IOpAuthApi> opAuthApiList = Lists.newArrayList();
@Autowired
protected LiteOrderCache liteOrderCache;
/**
* CID的服务器消息(key 为 cid)
......@@ -225,15 +232,19 @@ public class BaseDeviceHandler implements IDeviceHandler {
*/
protected StatusBean putInLine(Storage storage, StatusBean statusBean) {
try {
int type=COMPONENT_TYPE.COMPONENT;
if(storage.isXLC()){
type=COMPONENT_TYPE.FIXTURE;
}
String codeStr = statusBean.getCode();
Barcode barcodeSave = codeResolve.resolveOneValideBarcode(codeStr);
Barcode barcodeSave = codeResolve.resolveOneValideBarcode(codeStr,type);
//本地难条码是否可以入库
verifyBarcodePutIn(Lists.<Storage>newArrayList(storage), barcodeSave);
//从API验证
barcodeSave = verifyPutInFromApi(barcodeSave);
if (barcodeSave == null) {
barcodeSave = codeResolve.resolveOneValideBarcode(codeStr);
barcodeSave = codeResolve.resolveOneValideBarcode(codeStr,type);
}
//查找库位,生成入库任务
......@@ -770,6 +781,60 @@ public class BaseDeviceHandler implements IDeviceHandler {
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
......
......@@ -144,6 +144,12 @@ public class XLCBoxHandler extends BaseDeviceHandler {
}
@Override
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);
statusBean = saveAlarmAndHumidity(statusBean);
statusBean = handleXLCStatusBean(statusBean);
......@@ -152,6 +158,13 @@ public class XLCBoxHandler extends BaseDeviceHandler {
if(humidityResult != null){
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!