Commit d4a64955 zshaohui

1.手动出库调用wms接口

2.uid出库导出 增加隔口数量
3.缓存箱子问题
1 个父辈 1e2338bd
......@@ -57,6 +57,7 @@ import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@RestController
......@@ -695,6 +696,7 @@ public class StoragePosController {
header.add(Arrays.asList("料箱所属架位"));
header.add(Arrays.asList("料箱是否在库"));
header.add(Arrays.asList("是否禁用"));
header.add(Arrays.asList("剩余空隔口数量"));
return header;
}
......@@ -742,12 +744,26 @@ public class StoragePosController {
}
boxData.add("");
int count = 0;
List<Barcode> subCodeList = barcode.getSubCodeList();
if (subCodeList == null || subCodeList.isEmpty()){
if ("C07".equals(barcode.getPartNumber())){
count = 6;
} else if ("C13".equals(barcode.getPartNumber()) || "C15".equals(barcode.getPartNumber())){
count = 3;
}
} else {
Map<String, List<Barcode>> posNameMap = subCodeList.stream().collect(Collectors.groupingBy(Barcode::getPosName));
if ("C07".equals(barcode.getPartNumber())){
count = 6 - posNameMap.keySet().size();
} else if ("C13".equals(barcode.getPartNumber()) || "C15".equals(barcode.getPartNumber())){
count = 3 - posNameMap.keySet().size();
}
}
boxData.add(count+"");
dataList.add(boxData);
List<Barcode> subCodeList = barcode.getSubCodeList();
//List<Barcode> subCodeList = barcode.getSubCodeList();
if (subCodeList != null && !subCodeList.isEmpty()){
for (Barcode subCode : subCodeList) {
List<Object> data = new ArrayList<>();
......@@ -789,7 +805,7 @@ public class StoragePosController {
} else {
data.add("");
}
data.add("");
dataList.add(data);
}
}
......
......@@ -554,6 +554,12 @@ public class OutLineController {
LuxsanApi.pickingIssue(new PickingIssueRequest(CommonUtil.plantCode, liteOrder.getOrderNo(), orderItem.getItemId(), barcode.getPartNumber()
, barcode.getWarehouseCode(), orderItem.getBrand(), orderItem.getFace(), batchCode, Arrays.asList(barcode.getBarcode())));
}
} else {
//人工出库,
LuxsanApi.pickingIssue(new PickingIssueRequest(CommonUtil.plantCode, "SMFW"+System.currentTimeMillis(), "0", barcode.getPartNumber()
, barcode.getWarehouseCode(), "", "", "", Arrays.asList(barcode.getBarcode())));
}
}
......
......@@ -52,6 +52,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
@Api(tags = "设备通信")
......@@ -694,6 +695,8 @@ public class CDeviceController {
return ResultBean.newErrorResult(-1,"","未找到"+boxStr+"的入库库位");
}
AtomicBoolean isProcess = new AtomicBoolean(false);
@ApiOperation("入料机构获取可用料格")
@RequestMapping("/validBin")
@AnonymousAccess
......@@ -703,88 +706,85 @@ public class CDeviceController {
String source = paramMap.get("source");
String needBinCodeStr = paramMap.get("needBinCodeStr");
boolean ignoreWorkBox = false;
String ignoreWorkStr = paramMap.get("ignoreWorkBox");
if (StringUtils.isNotEmpty(ignoreWorkStr)){
ignoreWorkBox = Boolean.valueOf(ignoreWorkStr);
if (isProcess.get()){
//return ResultBean.newErrorResult(-1,"",stackerId+"上一次请求还在处理,等待处理完成后,再返回");
}
List<String> validBinList = new ArrayList<String>();
log.info("入料机构获取料串[" + stackerId + "]的可用料格[" + binListStr + "],入料机构为[" + source + "],需要的料格信息为:"+needBinCodeStr+",是否忽略当前工作的料箱:"+ignoreWorkStr);
isProcess.set(true);
if (!MaterialUtil.bindInfo(stackerId)) {
return ResultBean.newErrorResult(-1, "error.nobind", "料串[" + stackerId + "]未绑定任何信息");
}
String partNumber = "";
String provider = "";
String dateStr = "";
if (MaterialUtil.storTransfer(stackerId)) {
StorTransfer storTransfer = MaterialUtil.getStorTransferInfo(stackerId);
partNumber = storTransfer.getMaterialStr();
provider = storTransfer.getProvider();
} else if (MaterialUtil.ticketTransfer(stackerId)){
TicketTransfer ticketTransfer = MaterialUtil.getTicketTransferInfo(stackerId);
partNumber = ticketTransfer.getPn();
provider = ticketTransfer.getProvider();
} else if (MaterialUtil.ticketReturn(stackerId)){
TicketReturn ticketReturn = MaterialUtil.getTicketReturnInfo(stackerId);
partNumber = ticketReturn.getPn();
provider = ticketReturn.getProvider();
} else if (MaterialUtil.bindGr(stackerId)){
BindGrInfo bindGrInfo = MaterialUtil.getBindGrInfo(stackerId);
partNumber = bindGrInfo.getMaterialCode();
provider = bindGrInfo.getBrand();
dateStr = bindGrInfo.getGrDate();
} else if (MaterialUtil.returnTower(stackerId)){
ReturnTower returnTower = MaterialUtil.getReturnTowerInfo(stackerId);
partNumber = returnTower.getMaterialStr();
provider = returnTower.getProvider();
}
ValidBin validBin = null;
try {
boolean ignoreWorkBox = false;
String ignoreWorkStr = paramMap.get("ignoreWorkBox");
if (StringUtils.isNotEmpty(ignoreWorkStr)){
ignoreWorkBox = Boolean.valueOf(ignoreWorkStr);
}
Barcode stackerBarcode = new Barcode();
stackerBarcode.setBarcode(stackerId);
stackerBarcode.setPartNumber(partNumber);
stackerBarcode.setProvider(provider);
//将GR日期设置为生产日期
if (StringUtils.isNotBlank(dateStr)) {
Date grDate = DateUtil.getNoTimeDate(dateStr);
stackerBarcode.setProduceDate(grDate);
}
String warhouseCode = MaterialUtil.getWarhouseCode(stackerId);
stackerBarcode.setWarehouseCode(warhouseCode);
/*String[] binList = binListStr.split(",");
for (String binId : binList) {
String boxStr = BoxHandleUtil.getBoxStr(binId);
Barcode boxBarcode = codeResolve.resolveOneValideBarcode(boxStr);
//为料箱分配一个库位,直接放到库位中, 如果没有库位, 那么这个料箱不允许使用
StoragePos pos = BoxHandleUtil.locOnePos(boxBarcode);
if(pos != null){
String canPutIn = BinCacheUtil.canMaterialPutInBin(stackerBarcode,boxBarcode,binId);
if(canPutIn.isEmpty()){
validBinList.add(binId);
}else{
log.info(canPutIn);
}
List<String> validBinList = new ArrayList<String>();
log.info("入料机构获取料串[" + stackerId + "]的可用料格[" + binListStr + "],入料机构为[" + source + "],需要的料格信息为:"+needBinCodeStr+",是否忽略当前工作的料箱:"+ignoreWorkStr);
if (!MaterialUtil.bindInfo(stackerId)) {
return ResultBean.newErrorResult(-1, "error.nobind", "料串[" + stackerId + "]未绑定任何信息");
}
}
Map<String,Object> dataMap = new HashMap<>();
dataMap.put("validBinList",validBinList);*/
String partNumber = "";
String provider = "";
String dateStr = "";
if (MaterialUtil.storTransfer(stackerId)) {
StorTransfer storTransfer = MaterialUtil.getStorTransferInfo(stackerId);
partNumber = storTransfer.getMaterialStr();
provider = storTransfer.getProvider();
} else if (MaterialUtil.ticketTransfer(stackerId)){
TicketTransfer ticketTransfer = MaterialUtil.getTicketTransferInfo(stackerId);
partNumber = ticketTransfer.getPn();
provider = ticketTransfer.getProvider();
} else if (MaterialUtil.ticketReturn(stackerId)){
TicketReturn ticketReturn = MaterialUtil.getTicketReturnInfo(stackerId);
partNumber = ticketReturn.getPn();
provider = ticketReturn.getProvider();
} else if (MaterialUtil.bindGr(stackerId)){
BindGrInfo bindGrInfo = MaterialUtil.getBindGrInfo(stackerId);
partNumber = bindGrInfo.getMaterialCode();
provider = bindGrInfo.getBrand();
dateStr = bindGrInfo.getGrDate();
} else if (MaterialUtil.returnTower(stackerId)){
ReturnTower returnTower = MaterialUtil.getReturnTowerInfo(stackerId);
partNumber = returnTower.getMaterialStr();
provider = returnTower.getProvider();
}
Barcode stackerBarcode = new Barcode();
stackerBarcode.setBarcode(stackerId);
stackerBarcode.setPartNumber(partNumber);
stackerBarcode.setProvider(provider);
//将GR日期设置为生产日期
if (StringUtils.isNotBlank(dateStr)) {
Date grDate = DateUtil.getNoTimeDate(dateStr);
stackerBarcode.setProduceDate(grDate);
}
String warhouseCode = MaterialUtil.getWarhouseCode(stackerId);
stackerBarcode.setWarehouseCode(warhouseCode);
validBin = BinCacheUtil.validBin(stackerBarcode, source, binListStr,needBinCodeStr,ignoreWorkBox);
if (validBin == null){
isProcess.set(false);
return ResultBean.newErrorResult(-1,"",stackerId+"未找到可用料箱");
}
ValidBin validBin = BinCacheUtil.validBin(stackerBarcode, source, binListStr,needBinCodeStr,ignoreWorkBox);
if (validBin == null){
return ResultBean.newErrorResult(-1,"",stackerId+"未找到可用料箱");
callAgvTask(stackerId, stackerBarcode);
} catch (Exception e) {
e.printStackTrace();
isProcess.set(false);
}
callAgvTask(stackerId, stackerBarcode);
isProcess.set(false);
log.info("入料机构获取可用料格:"+stackerId+"返回的数据为:"+JSON.toJSONString(validBin));
return ResultBean.newOkResult(validBin);
}
......
......@@ -53,6 +53,16 @@ public class BinCacheUtil {
//判断code是否相同
String code = cacheBinCodeMap.get(binCode);
if (StringUtils.isEmpty(code)){
log.info(binCode+"未找到,重新调用接口,库别为:"+warehouseCode);
Map<String, String> map = binCodeCacheMap(warehouseCode);
cacheBinCodeMap.putAll(map);
}
code = cacheBinCodeMap.get(binCode);
if (StringUtils.isNotEmpty(code)) {
if (code.equals(warehouseCode)) {
//binCodeUpdateTime = System.currentTimeMillis();
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!