Commit 38838ba3 LN

API006问题修改

1 个父辈 8e48a9c5
......@@ -841,54 +841,49 @@ public class LiteOrderCache {
material.setPartNumber(item.getBarcode().getPartNumber());
return material;
}).collect(Collectors.toList());
//mes提前扣除,扣除成功的直接出库,失败的标记状态
List<TrackStatus> trackStatusList = MicronApi.Api010(operationId, materialList);
if (trackStatusList != null && !trackStatusList.isEmpty()) {
for (LiteOrderItem orderItem : order.getOrderItems()) {
String ri = orderItem.getRi();
//判断是否缺料
StoragePos storagePos = storagePosList.stream().filter(pos -> pos.getBarcode().equals(ri)).findFirst().orElse(null);
if (storagePos == null) {
//缺料
orderItem.setStatus(OrderItemStatus.shortage);
}
//mes提前扣除,扣除成功的直接出库,失败的标记状态
List<TrackStatus> trackStatusList = MicronApi.Api010(operationId, materialList);
if (trackStatusList != null && !trackStatusList.isEmpty()) {
for (LiteOrderItem orderItem : order.getOrderItems()) {
String ri = orderItem.getRi();
//判断是否缺料
StoragePos storagePos = storagePosList.stream().filter(pos -> pos.getBarcode().equals(ri)).findFirst().orElse(null);
if (storagePos == null) {
//缺料
orderItem.setStatus(OrderItemStatus.shortage);
} else {
orderItem.setNeedNum(storagePos.getBarcode().getAmount());
TrackStatus trackStatus = trackStatusList.stream().filter(item -> ri.equals(item.getSerialNum())).findAny().orElse(null);
if (trackStatus != null && trackStatus.isSuccess()) {
//生成任务
DataLog dataLog = new DataLog(dataCache.getStorageById(storagePos.getStorageId()), storagePos.getBarcode(), storagePos);
dataLog.setType(OP.CHECKOUT);
dataLog.setSourceId(order.getId());
dataLog.setSourceName(order.getOrderNo());
dataLog.setSubSourceId(orderItem.getId());
dataLog.setStatus(OP_STATUS.WAIT.name());
dataLog.setOperationId(operationId);
taskService.addTaskToExecute(dataLog);
taskReelCount++;
//设置状态.正在出库
orderItem.setStatus(OrderItemStatus.executing);
log.info("preTaskCheckOut 出库单[" + order.getOrderNo() + "] operatetionId [" + order.getOperationId() + "] ,pn[" + orderItem.getPn() + "] ,RI[" + ri + "] 验证成功,开始出库,累计出库盘数=" + taskReelCount);
} else {
TrackStatus trackStatus = trackStatusList.stream().filter(item -> ri.equals(item.getSerialNum())).findAny().orElse(null);
if (trackStatus != null) {
if (trackStatus.isSuccess()) {
// StoragePos pos = storagePosManager.getByBarcode(ri);
/*if (pos == null) {
orderItem.setStatus(OrderItemStatus.shortage);
continue;
}*/
//生成任务
DataLog dataLog = new DataLog(dataCache.getStorageById(storagePos.getStorageId()), storagePos.getBarcode(), storagePos);
dataLog.setType(OP.CHECKOUT);
dataLog.setSourceId(order.getId());
dataLog.setSourceName(order.getOrderNo());
dataLog.setSubSourceId(orderItem.getId());
dataLog.setStatus(OP_STATUS.WAIT.name());
dataLog.setOperationId(operationId);
taskService.addTaskToExecute(dataLog);
taskReelCount++;
//设置状态.正在出库
orderItem.setStatus(OrderItemStatus.executing);
log.info("preTaskCheckOut 出库单["+order.getOrderNo()+"] operatetionId ["+order.getOperationId()+"] ,pn["+orderItem.getPn()+"] ,RI["+ri+"] 验证成功,开始出库,累计出库盘数="+taskReelCount);
} else {
//标记状态为mes扣除失败
orderItem.setStatus(OrderItemStatus.executFail);
log.info("preTaskCheckOut 出库单["+order.getOrderNo()+"] operatetionId ["+order.getOperationId()+"] ,pn["+orderItem.getPn()+"] ,RI["+ri+"] 验证失败,更改状态=executFail");
}
}
//标记状态为mes扣除失败
orderItem.setStatus(OrderItemStatus.executFail);
log.info("preTaskCheckOut 出库单[" + order.getOrderNo() + "] operatetionId [" + order.getOperationId() + "] ,pn[" + orderItem.getPn() + "] ,RI[" + ri + "] 验证失败,更改状态=executFail");
}
liteOrderItemManager.save(orderItem);
}
liteOrderItemManager.save(orderItem);
}
}
log.info("preTaskCheckOut 出库单["+order.getOrderNo()+"] operatetionId ["+order.getOperationId()+"] 出库完成,累计任务数="+taskReelCount);
log.info("preTaskCheckOut 出库单[" + order.getOrderNo() + "] operatetionId [" + order.getOperationId() + "] 出库完成,累计任务数=" + taskReelCount);
order.setTaskReelCount(taskReelCount);
order.setTotalTaskReelCount(order.getTotalTaskReelCount() + taskReelCount);
if (taskReelCount <= 0) {
......@@ -1054,7 +1049,7 @@ public class LiteOrderCache {
for (LiteOrderItem reelItem :
item.getSelectItems()) {
MaterialStatus s = apiResultMap.get(reelItem.getRi());
if (s.getMaterialStatus().toUpperCase().equalsIgnoreCase("SUCCESS")) {
if (s.StatusOk()) {
reelItem.setStatus(OrderItemStatus.CheckOk);
StoragePos pos = storagePosManager.getByBarcode(s.getSerialNum());
log.info("工单【" + orderNo + "】PN [" + item.getPn() + "] RI [" + item.getRi() + "] API009 验证成功,更改状态为 CheckOk ,锁定库位【" + pos.getPosName() + "】");
......
......@@ -300,7 +300,7 @@ public class MicronApi {
public static List<DispatchId> Api004(String operationId) {
String url = config.getUrl(config.api_name_004);
url = MessageFormat.format(url, operationId);
if(ObjectUtil.isEmpty(url)&& Debug){
if( Debug){
List<DispatchId> list=new ArrayList<>();
DispatchId id1=new DispatchId("dispatchIds1",new ArrayList<>());
List<Object> atts=new ArrayList<>();
......@@ -345,7 +345,7 @@ public class MicronApi {
String url = config.getUrl(config.api_name_005);
List<Material> materialList = new ArrayList<>();
if(ObjectUtil.isEmpty(url)&& Debug){
if( Debug){
materialList.add(new Material("serialNum1","partNumber1"));
return materialList;
}
......@@ -354,8 +354,18 @@ public class MicronApi {
try {
log.info("调用MES接口 API005: url=" + url + "");
MicronResult result = HttpHelper.getMicronJson(url);
if (result.isOk()&& result.statusIsSuccess()) {
materialList = result.getResult("materials");
if (result.isOk() ) {
List<Object> objects = result.getResult("materials",false);
if(objects==null||objects.size()<=0){
log.info("API005 ,接口通信失败");
throw new ApiException("smfcore.api.fail", "{0} Failed to get data", new String[]{"API005"});
}
for (Object object :
objects) {
Material material= JsonUtil.toObj(JsonUtil.toJsonStr( object) ,Material.class);
materialList.add(material);
}
return materialList;
}else{
log.info("API005 ,接口通信失败");
......@@ -365,7 +375,6 @@ public class MicronApi {
log.error(url + "出错", e);
return null;
}
return materialList;
}
public static List<Material> Api006(String operationId, List<String> pretasks) {
......@@ -383,7 +392,7 @@ public class MicronApi {
List<Material> materialList = new ArrayList<>();
String url = config.getUrl(config.api_name_006);
if(ObjectUtil.isEmpty(url)&& Debug){
if( Debug){
materialList.add(new Material("serialNum1","partNumber1"));
materialList.add(new Material("serialNum2","partNumber2"));
return materialList;
......@@ -506,8 +515,16 @@ public class MicronApi {
public static Map<String ,MaterialStatus> Api009(List<Barcode> barcodeList) {
String url = config.getUrl(config.api_name_009);
Map<String, MaterialStatus> resultMap = new HashMap<>();
if(Debug){
for (Barcode barcode:
barcodeList) {
resultMap.put(barcode.getBarcode(),new MaterialStatus(barcode.getBarcode(),barcode.getPartNumber(),"success",""));
}
}
String url = config.getUrl(config.api_name_009);
try {
Map<String, Object> paramMap = new HashMap<>();
......@@ -583,6 +600,11 @@ public class MicronApi {
if (micronResult.isOk()&& micronResult.statusIsSuccess()) {
statusList = micronResult.getResult("trackStatus");
if(statusList==null||statusList.size()<=0){
log.info("API010 ,接口通信失败");
throw new ApiException("smfcore.api.fail", "{0} Failed to get data", new String[]{"API010"});
}
}else{
log.info("API010 ,接口通信失败");
throw new ApiException("smfcore.api.fail", "{0} Failed to get data", new String[]{"API010"});
......
......@@ -12,6 +12,6 @@ import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
public class IdInfo implements Serializable {
private String Id;
private String id;
private List<Object> Attribute;
}
\ No newline at end of file
......@@ -14,5 +14,10 @@ public class MaterialStatus implements Serializable {
private String serialNum;
private String partNumber;
private String materialStatus;
private String linePrepOrderId;
private String linePrepOrderId;
public boolean StatusOk() {
return materialStatus.equalsIgnoreCase("SUCCESS");
}
}
......@@ -345,7 +345,7 @@ private IStoragePosManager storagePosManager;
reelItem.setNeedNum(pos.getBarcode().getAmount());
MaterialStatus s = apiResultMap.get(barcode.getBarcode());
if (s.getMaterialStatus().toUpperCase().equalsIgnoreCase("SUCCESS")) {
if (s.StatusOk()) {
reelItem.setStatus(OrderItemStatus.CheckOk);
log.info("工单【" + order.getOrderNo() + "】PN [" + item.getPn() + "] RI [" + item.getRi() + "] API009 验证成功,更改状态为 CheckOk ,锁定库位【" + pos.getPosName() + "】");
......
......@@ -46,6 +46,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Slf4j
......@@ -93,33 +94,6 @@ public class MicronPreTaskController {
@GetMapping("/getTaskId")
public ResultBean task(String mode) throws ApiException {
//
// MicronResult result = new MicronResult(200,"{\n" +
// " \"trasactionId\": \"00000000-0000-0000-0000-000000000000\",\n" +
// " \"materials\": [\n" +
// " {\n" +
// " \"serialNum\": \"P2SITPCB001\",\n" +
// " \"partNumber\": \"550-502922\"\n" +
// " }\n" +
// " ]\n" +
// "}");
// if (result.isOk()) {
// List<Object> materialList = result.getResult("materials",false);
// if(materialList.size()>0){
// if (materialList != null && !materialList.isEmpty()) {
// //生成工单进行出库
// List<LiteOrderItem> itemList = new ArrayList<>();
// for (Object object : materialList) {
// Material material= JsonUtil.toObj(JsonUtil.toJsonStr( object) ,Material.class);
//
// }
// }
// }
// }else{
//
// log.info("API006 ,接口通信失败");
// throw new ApiException("smfcore.api.fail", "{0} Failed to get data", new String[]{"API006"});
// }
//判断是否验证
if (!MicronApi.isEnable()) {
return ResultBean.newErrorResult(9, "smfcore.micron.apiClose", " Not yet open");
......@@ -177,7 +151,11 @@ public class MicronPreTaskController {
//记录
String key = Constants.CACHE_DISPATCH + mode;
//先从缓存中获取数据
dto = dataCache.getCache(key);
try{
dto = dataCache.getCache(key);
}catch (Exception ex){
return null;
}
return dto;
}
@ApiOperation("根据勾选的ID,提交后 创建工单任务")
......@@ -206,40 +184,45 @@ public class MicronPreTaskController {
return ResultBean.newErrorResult(-1,"smfcore.api.fail", "{0} Failed to get data",new String[]{"API006"});
}
}
if (materialList != null && !materialList.isEmpty()) {
//生成工单进行出库
List<LiteOrderItem> itemList = new ArrayList<>();
for (Material material : materialList) {
LiteOrderItem item = new LiteOrderItem();
item.setPn(material.getPartNumber());
item.setRi(material.getSerialNum());
item.setNeedReelCount(1);
item.setMode(mode);
// //验证是否有料,无料直接显示缺料
// StoragePos pos = storagePosManager.getByBarcode(item.getRi());
// if (pos == null) {
// item.setStatus(OrderItemStatus.shortage);
// } else {
item.setStatus(OrderItemStatus.wait);
// }
itemList.add(item);
try{
if (materialList != null && !materialList.isEmpty()) {
//生成工单进行出库
List<LiteOrderItem> itemList = new ArrayList<>();
for (Material material : materialList) {
LiteOrderItem item = new LiteOrderItem();
item.setPn(material.getPartNumber());
item.setRi(material.getSerialNum());
item.setNeedReelCount(1);
item.setMode(mode);
// //验证是否有料,无料直接显示缺料
// StoragePos pos = storagePosManager.getByBarcode(item.getRi());
// if (pos == null) {
// item.setStatus(OrderItemStatus.shortage);
// } else {
item.setStatus(OrderItemStatus.wait);
// }
itemList.add(item);
}
LiteOrder liteOrder = new LiteOrder();
liteOrder.setOrderNo(operationId);
liteOrder.setMode(mode);
liteOrder.setOperationId(operationId);
liteOrder.setOrderItems(itemList);
liteOrder.setStatus(LITEORDER_STATUS.NEW);
liteOrder = liteOrderManager.createWithItems(liteOrder);
liteOrderCache.addOrderToMap(liteOrder);
log.info("submit 勾选后,生成工单:[" + operationId + "][" + mode + "]");
//开始查询是否可以出库
liteOrderCache.preTaskCheckOut(liteOrder, operationId, materialList);
}
LiteOrder liteOrder = new LiteOrder();
liteOrder.setOrderNo(operationId);
liteOrder.setMode(mode);
liteOrder.setOperationId(operationId);
liteOrder.setOrderItems(itemList);
liteOrder.setStatus(LITEORDER_STATUS.NEW);
liteOrder = liteOrderManager.createWithItems(liteOrder);
liteOrderCache.addOrderToMap(liteOrder);
log.info("submit 勾选后,生成工单:[" + operationId + "][" + mode + "]");
//开始查询是否可以出库
liteOrderCache.preTaskCheckOut(liteOrder, operationId, materialList);
}catch (Exception ex){
return ResultBean.newErrorResult(-1, "smfcore.micron.operationFailure", "操作失败");
}
return ResultBean.newOkResult("");
}
......@@ -320,7 +303,8 @@ public class MicronPreTaskController {
@ApiOperation("放弃出库")
@PostMapping("/abort")
@AnonymousAccess
public ResultBean abort(@RequestBody String mode) {
public ResultBean abort(@RequestBody Map<String,Object> params) {
String mode=params.get("mode").toString();
TaskDto dto = getTaskDtoByMode(mode);
if (dto == null) {
return ResultBean.newErrorResult(-1, "smfcore.micron.operationFailure", "操作失败");
......@@ -332,8 +316,8 @@ public class MicronPreTaskController {
//如果dto不是空
if(dto!=null){
//清空配置
String key=Constants.CACHE_DISPATCH+order.getMode();
log.info("abort mode="+order.getMode()+" 清空 key="+key+" 的cache");
String key=Constants.CACHE_DISPATCH+mode;
log.info("abort mode="+mode+" 清空 key="+key+" 的cache");
dataCache.updateCache(key,"");
return ResultBean.newOkResult("");
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!