Commit d4a64955 zshaohui

1.手动出库调用wms接口

2.uid出库导出 增加隔口数量
3.缓存箱子问题
1 个父辈 1e2338bd
...@@ -57,6 +57,7 @@ import java.io.IOException; ...@@ -57,6 +57,7 @@ import java.io.IOException;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
@Slf4j @Slf4j
@RestController @RestController
...@@ -695,6 +696,7 @@ public class StoragePosController { ...@@ -695,6 +696,7 @@ public class StoragePosController {
header.add(Arrays.asList("料箱所属架位")); header.add(Arrays.asList("料箱所属架位"));
header.add(Arrays.asList("料箱是否在库")); header.add(Arrays.asList("料箱是否在库"));
header.add(Arrays.asList("是否禁用")); header.add(Arrays.asList("是否禁用"));
header.add(Arrays.asList("剩余空隔口数量"));
return header; return header;
} }
...@@ -742,12 +744,26 @@ public class StoragePosController { ...@@ -742,12 +744,26 @@ public class StoragePosController {
} }
boxData.add(""); 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); dataList.add(boxData);
//List<Barcode> subCodeList = barcode.getSubCodeList();
List<Barcode> subCodeList = barcode.getSubCodeList();
if (subCodeList != null && !subCodeList.isEmpty()){ if (subCodeList != null && !subCodeList.isEmpty()){
for (Barcode subCode : subCodeList) { for (Barcode subCode : subCodeList) {
List<Object> data = new ArrayList<>(); List<Object> data = new ArrayList<>();
...@@ -789,7 +805,7 @@ public class StoragePosController { ...@@ -789,7 +805,7 @@ public class StoragePosController {
} else { } else {
data.add(""); data.add("");
} }
data.add("");
dataList.add(data); dataList.add(data);
} }
} }
......
...@@ -554,6 +554,12 @@ public class OutLineController { ...@@ -554,6 +554,12 @@ public class OutLineController {
LuxsanApi.pickingIssue(new PickingIssueRequest(CommonUtil.plantCode, liteOrder.getOrderNo(), orderItem.getItemId(), barcode.getPartNumber() LuxsanApi.pickingIssue(new PickingIssueRequest(CommonUtil.plantCode, liteOrder.getOrderNo(), orderItem.getItemId(), barcode.getPartNumber()
, barcode.getWarehouseCode(), orderItem.getBrand(), orderItem.getFace(), batchCode, Arrays.asList(barcode.getBarcode()))); , 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; ...@@ -52,6 +52,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Api(tags = "设备通信") @Api(tags = "设备通信")
...@@ -694,6 +695,8 @@ public class CDeviceController { ...@@ -694,6 +695,8 @@ public class CDeviceController {
return ResultBean.newErrorResult(-1,"","未找到"+boxStr+"的入库库位"); return ResultBean.newErrorResult(-1,"","未找到"+boxStr+"的入库库位");
} }
AtomicBoolean isProcess = new AtomicBoolean(false);
@ApiOperation("入料机构获取可用料格") @ApiOperation("入料机构获取可用料格")
@RequestMapping("/validBin") @RequestMapping("/validBin")
@AnonymousAccess @AnonymousAccess
...@@ -703,88 +706,85 @@ public class CDeviceController { ...@@ -703,88 +706,85 @@ public class CDeviceController {
String source = paramMap.get("source"); String source = paramMap.get("source");
String needBinCodeStr = paramMap.get("needBinCodeStr"); String needBinCodeStr = paramMap.get("needBinCodeStr");
boolean ignoreWorkBox = false; if (isProcess.get()){
//return ResultBean.newErrorResult(-1,"",stackerId+"上一次请求还在处理,等待处理完成后,再返回");
String ignoreWorkStr = paramMap.get("ignoreWorkBox");
if (StringUtils.isNotEmpty(ignoreWorkStr)){
ignoreWorkBox = Boolean.valueOf(ignoreWorkStr);
} }
List<String> validBinList = new ArrayList<String>(); isProcess.set(true);
log.info("入料机构获取料串[" + stackerId + "]的可用料格[" + binListStr + "],入料机构为[" + source + "],需要的料格信息为:"+needBinCodeStr+",是否忽略当前工作的料箱:"+ignoreWorkStr);
if (!MaterialUtil.bindInfo(stackerId)) {
return ResultBean.newErrorResult(-1, "error.nobind", "料串[" + stackerId + "]未绑定任何信息");
}
String partNumber = ""; ValidBin validBin = null;
String provider = ""; try {
String dateStr = ""; boolean ignoreWorkBox = false;
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();
}
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)) { List<String> validBinList = new ArrayList<String>();
Date grDate = DateUtil.getNoTimeDate(dateStr); log.info("入料机构获取料串[" + stackerId + "]的可用料格[" + binListStr + "],入料机构为[" + source + "],需要的料格信息为:"+needBinCodeStr+",是否忽略当前工作的料箱:"+ignoreWorkStr);
stackerBarcode.setProduceDate(grDate);
} if (!MaterialUtil.bindInfo(stackerId)) {
String warhouseCode = MaterialUtil.getWarhouseCode(stackerId); return ResultBean.newErrorResult(-1, "error.nobind", "料串[" + 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);
}
} }
}
Map<String,Object> dataMap = new HashMap<>(); String partNumber = "";
dataMap.put("validBinList",validBinList);*/ 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); callAgvTask(stackerId, stackerBarcode);
if (validBin == null){ } catch (Exception e) {
return ResultBean.newErrorResult(-1,"",stackerId+"未找到可用料箱"); e.printStackTrace();
isProcess.set(false);
} }
callAgvTask(stackerId, stackerBarcode); isProcess.set(false);
log.info("入料机构获取可用料格:"+stackerId+"返回的数据为:"+JSON.toJSONString(validBin)); log.info("入料机构获取可用料格:"+stackerId+"返回的数据为:"+JSON.toJSONString(validBin));
return ResultBean.newOkResult(validBin); return ResultBean.newOkResult(validBin);
} }
......
...@@ -53,6 +53,16 @@ public class BinCacheUtil { ...@@ -53,6 +53,16 @@ public class BinCacheUtil {
//判断code是否相同 //判断code是否相同
String code = cacheBinCodeMap.get(binCode); 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 (StringUtils.isNotEmpty(code)) {
if (code.equals(warehouseCode)) { if (code.equals(warehouseCode)) {
//binCodeUpdateTime = System.currentTimeMillis(); //binCodeUpdateTime = System.currentTimeMillis();
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!