Commit ec84a969 LN

按钮点击后触发API011

1 个父辈 b0783a6e
...@@ -881,19 +881,51 @@ public class MicronApi { ...@@ -881,19 +881,51 @@ public class MicronApi {
return false; return false;
} }
public static boolean Api201(String linePrepOrderId, String operationId) { public static String Api201(String linePrepOrderId, String operationId) {
// Http Status code:
// 200 - Success
// {
// "trasactionId": <TransactionId>,
// "tag":
// [
// <tagKey1> : <tagValue1>,
// <tagKey2> : <tagValue2>,
// ...
// ],
// "linePrepOrderStatus": <linePrepOrderStatus>
// }
//
// Error Status code:
// {
// "transactionId": <TransactionId>,
// "tag":
// [
// <tagKey1> : <tagValue1>,
// <tagKey2> : <tagValue2>,
// ...
// ],
// "error": <ErrCode>,
// "message": <ErrMessage>,
// "detail": <ErrDetail>
// }
String url = config.getUrl(config.api_name_201); String url = config.getUrl(config.api_name_201);
url = MessageFormat.format(url, linePrepOrderId, operationId); url = MessageFormat.format(url, linePrepOrderId, operationId);
try { try {
log.info("调用MES接口 API201: url=" + url + " "); log.info("调用MES接口 API201: url=" + url + " ");
MicronResult result = HttpHelper.postMicronJson(url, null); MicronResult result = HttpHelper.postMicronJson(url, null);
return true; if (result.isOk()) {
return "";
}
String msg = getDErrorMsg(result);
if (ObjectUtil.isNotEmpty(msg)) {
return msg;
}
throw new ApiException("smfcore.api.fail", "{0} Failed to get data", new String[]{"Api201"});
} catch (ApiException e) { } catch (ApiException e) {
log.error(url + "出错", e); log.error(url + "出错", e);
return e.getMessage();
} }
return false;
} }
......
...@@ -83,6 +83,7 @@ public class MicronConfig { ...@@ -83,6 +83,7 @@ public class MicronConfig {
/** /**
* Add material(s) to reservation for the LinePrep specified, so that it can charged the material to the correct PO upon transferOut event * Add material(s) to reservation for the LinePrep specified, so that it can charged the material to the correct PO upon transferOut event
* operation/validate/ctrldispatch?linePrepOrderId={linePrepOrderId}&operationId={operationId}
*/ */
public String api_name_201 = "operation/validate/ctrldispatch?linePrepOrderId={linePrepOrderId}&operationId={operationId}"; public String api_name_201 = "operation/validate/ctrldispatch?linePrepOrderId={linePrepOrderId}&operationId={operationId}";
......
...@@ -3,7 +3,10 @@ package com.neotel.smfcore.custom.micron1053.task; ...@@ -3,7 +3,10 @@ package com.neotel.smfcore.custom.micron1053.task;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.common.bean.ResultBean; import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.FileUtil; import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.barcode.service.po.Barcode; import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.util.DataCache; import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.inList.service.po.InListItem; import com.neotel.smfcore.core.inList.service.po.InListItem;
...@@ -26,6 +29,7 @@ import com.neotel.smfcore.custom.micron1053.api.bean.MaterialStatus; ...@@ -26,6 +29,7 @@ import com.neotel.smfcore.custom.micron1053.api.bean.MaterialStatus;
import com.neotel.smfcore.custom.micron1053.task.bean.DispatchItemMapper; import com.neotel.smfcore.custom.micron1053.task.bean.DispatchItemMapper;
import com.neotel.smfcore.custom.micron1053.task.bean.dto.DispatchItemDto; import com.neotel.smfcore.custom.micron1053.task.bean.dto.DispatchItemDto;
import com.neotel.smfcore.custom.micron1053.task.bean.dto.ItemDetialDto; import com.neotel.smfcore.custom.micron1053.task.bean.dto.ItemDetialDto;
import com.neotel.smfcore.custom.micron1053.task.bean.dto.TaskDto;
import com.neotel.smfcore.custom.micron1053.task.enums.OrderItemStatus; import com.neotel.smfcore.custom.micron1053.task.enums.OrderItemStatus;
import com.neotel.smfcore.security.annotation.AnonymousAccess; import com.neotel.smfcore.security.annotation.AnonymousAccess;
import com.neotel.smfcore.security.bean.FileProperties; import com.neotel.smfcore.security.bean.FileProperties;
...@@ -96,6 +100,21 @@ private DataCache dataCache; ...@@ -96,6 +100,21 @@ private DataCache dataCache;
@Autowired @Autowired
private IStoragePosManager storagePosManager; private IStoragePosManager storagePosManager;
private TaskDto getTaskDtoByMode(String mode){
TaskDto dto = new TaskDto();
//记录
String key = Constants.CACHE_DISPATCH + mode;
//先从缓存中获取数据
try{
dto = dataCache.getCache(key);
}catch (Exception ex){
return null;
}
return dto;
}
@ApiOperation("获取出库页详情") @ApiOperation("获取出库页详情")
@AnonymousAccess @AnonymousAccess
@GetMapping("/getList") @GetMapping("/getList")
...@@ -109,7 +128,8 @@ private IStoragePosManager storagePosManager; ...@@ -109,7 +128,8 @@ private IStoragePosManager storagePosManager;
} }
//获取是否有此类型的工单信息 //获取是否有此类型的工单信息
//code=0,,如果已经存在,直接返回列表页面 //code=0,,如果已经存在,直接返回列表页面
//code=1,没有数据,进入上传工单页面 //code=1,没有数据,OutSide按钮进入上传工单页面 ,ControlledDispatch 按钮进入选择Pn或上传工单页面
//code=2,ControlledDispatch 进入输入lineID页面
List<LiteOrderItem> itemList = getLiteOrderItemList(mode); List<LiteOrderItem> itemList = getLiteOrderItemList(mode);
if (itemList != null && !itemList.isEmpty()) { if (itemList != null && !itemList.isEmpty()) {
//已存在,直接返回列表页面 //已存在,直接返回列表页面
...@@ -118,9 +138,39 @@ private IStoragePosManager storagePosManager; ...@@ -118,9 +138,39 @@ private IStoragePosManager storagePosManager;
} else { } else {
//需要进入上传工单页面 //判断是否生成,未关闭的工单
return ResultBean.newErrorResult(1, "", ""); TaskDto dto = getTaskDtoByMode(mode);
if (dto != null && ObjectUtil.isNotEmpty(dto.getOperationId())) {
if(ObjectUtil.isNotEmpty(dto.getLineId())||mode=="RACK"){
//已有 operationId ,需要进入上传工单页面
return ResultBean.newErrorResult(1, "", "");
}else {
//已有 operationId ,没有lineID,需要输入lineID
return ResultBean.newErrorResult(2, "", "");
}
} else {
String operationId = "";
//==null需要获取operationId
dto = new TaskDto();
dto.setType(0);
dto.setMode(mode);
operationId = MicronApi.Api011(mode, SecurityUtils.getLoginUsername(), "");
if (StringUtils.isNotBlank(operationId)) {
dto.setOperationId(operationId);
dataCache.updateCache(Constants.CACHE_DISPATCH + mode, dto);
} else {
return ResultBean.newErrorResult(-1, "smfcore.api.fail", "Api011 获取数据失败", new String[]{"API011"});
}
}
} }
return ResultBean.newErrorResult(1, "", "");
} }
...@@ -166,6 +216,66 @@ private IStoragePosManager storagePosManager; ...@@ -166,6 +216,66 @@ private IStoragePosManager storagePosManager;
} }
@ApiOperation("controlledDisSure 输入lineID后确认调用此方法")
@AnonymousAccess
@PostMapping("/controlledDisSure")
public ResultBean controlledDisSure( @RequestParam String mode,@RequestParam String reason ) {
//判断是否验证
if (!MicronApi.isEnable()) {
return ResultBean.newErrorResult(9, "smfcore.micron.apiClose", " Not yet open");
}
if (ObjectUtil.isEmpty(mode)) {
return ResultBean.newErrorResult(-1, "smfcore.micron.operationFailure", "操作失败");
}
//获取是否有此类型的工单信息
//code=0,,如果已经存在,直接返回列表页面
//code=1,没有数据,OutSide按钮进入上传工单页面 ,ControlledDispatch 按钮进入选择Pn或上传工单页面
//code=2,ControlledDispatch 进入输入lineID页面
//code=-1:出错提示信息
List<LiteOrderItem> itemList = getLiteOrderItemList(mode);
if (itemList != null && !itemList.isEmpty()) {
//已存在,直接返回列表页面
List<DispatchItemDto> list = dispatchItemMapper.toDto(itemList);
return ResultBean.newOkResult(list);
} else {
//判断是否生成,未关闭的工单
TaskDto dto = getTaskDtoByMode(mode);
if (dto != null && ObjectUtil.isNotEmpty(dto.getOperationId())) {
dto.setLineId(reason);
//调用API201
String result = MicronApi.Api201(reason, dto.getOperationId());
if (ObjectUtil.isNotEmpty(result)) {
//成功
dto.setLineId(reason);
dataCache.updateCache(Constants.CACHE_DISPATCH + mode, dto);
return ResultBean.newErrorResult(1, "", "");
} else {
return ResultBean.newErrorResult(-1, "", result);
}
} else {
String operationId = "";
//==null需要获取operationId
dto = new TaskDto();
dto.setType(0);
dto.setMode(mode);
operationId = MicronApi.Api011(mode, SecurityUtils.getLoginUsername(), "");
if (StringUtils.isNotBlank(operationId)) {
dto.setOperationId(operationId);
dataCache.updateCache(Constants.CACHE_DISPATCH + mode, dto);
} else {
return ResultBean.newErrorResult(-1, "smfcore.api.fail", "Api011 获取数据失败", new String[]{"API011"});
}
}
}
return ResultBean.newErrorResult(1, "", "");
}
@ApiOperation("Pn出库提交") @ApiOperation("Pn出库提交")
@AnonymousAccess @AnonymousAccess
...@@ -403,13 +513,6 @@ private IStoragePosManager storagePosManager; ...@@ -403,13 +513,6 @@ private IStoragePosManager storagePosManager;
return ResultBean.newOkResult(""); return ResultBean.newOkResult("");
} }
@ApiOperation("重试") @ApiOperation("重试")
@PostMapping("/retry") @PostMapping("/retry")
@AnonymousAccess @AnonymousAccess
......
...@@ -257,11 +257,11 @@ public class MicronPreTaskController { ...@@ -257,11 +257,11 @@ public class MicronPreTaskController {
@PostMapping("/retry") @PostMapping("/retry")
@AnonymousAccess @AnonymousAccess
public ResultBean retry(@RequestBody String mode) { public ResultBean retry(@RequestBody String mode) {
log.info(" retry :mode=" + mode + ",入库完成发送失败的,重新发送,其他状态暂不处理");
TaskDto dto = getTaskDtoByMode(mode); TaskDto dto = getTaskDtoByMode(mode);
if (dto == null) { if (dto == null) {
return ResultBean.newErrorResult(-1, "smfcore.micron.operationFailure", "操作失败"); return ResultBean.newErrorResult(-1, "smfcore.micron.operationFailure", "操作失败");
} }
log.info(" retry :mode=" + mode + ",入库完成发送失败的,重新发送,其他状态暂不处理");
//判断有没有生成任务 //判断有没有生成任务
LiteOrder order=getOrderByMode(mode); LiteOrder order=getOrderByMode(mode);
if (order == null) { if (order == null) {
......
...@@ -14,6 +14,7 @@ public class TaskDto { ...@@ -14,6 +14,7 @@ public class TaskDto {
private int type=1;// private int type=1;//
private String mode; private String mode;
private String operationId; private String operationId;
private String lineId;//Controlled Dispatch 按钮中输入的lineID
private List<LiteOrderItem> itemList; private List<LiteOrderItem> itemList;
private List<DispatchId> dispatchIdList; private List<DispatchId> dispatchIdList;
private List<MaterialDispatchStatus> statusList; private List<MaterialDispatchStatus> statusList;
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!