Commit cffc76ca LN

接口修改

1 个父辈 29e7db1e
......@@ -672,7 +672,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
boolean result=HikApi.scheduleTaskApi(task.getOperator(),taskInfo );
}else {
//出库完成,调用 ,7.6出库下架过账接口
boolean result = HikApi.checkOutApi(task.getOperator(), InOutApiInfo.outInfo(task.getOutType(), task.getBarcode(), task.getNum(), task.getBaseCode(), task.getLgort()));
boolean result = HikApi.checkOutApi(task.getOperator(), InOutApiInfo.outInfo(task.getOutType(), task.getBarcode(), task.getNum(), task.getBaseCode(), task.getLgort(),task.getSourceName()));
}
//从队列里面移除操作
......
......@@ -282,7 +282,7 @@ public class NLShelfHandler extends BaseDeviceHandler {
taskService.addTaskToFinished(inPos, null, loginUser);
opPosLight("close", inPos, null);
log.info(barcode.getBarcode() + " 出库完成, 库位[" + inPos.getPosName() + "]灭灯");
return ResultBean.newErrorResult(1, "smfcore.shelf.msg.outConfirm", "出库完成, 库位[{0}]灭灯", new String[]{inPos.getPosName()} );
return ResultBean.newOkResult( "smfcore.shelf.msg.outConfirm", "出库完成, 库位[{0}]灭灯", new String[]{inPos.getPosName()} );
}
}
return ResultBean.newErrorResult(1, "smfcore.shelf.msg.noTask", "操作失败,已在库位[{0}]中,未找到对应的出库任务", new String[]{inPos.getPosName()});
......
......@@ -79,7 +79,7 @@ public class HikApi {
return "";
}
/**
*接口名 转储单接口
*7.1接口名 转储单接口 不需要重发
* 功能说明 针对亮灯货架的转储出库,SMF系统根据业务类型调用MES接口,推送转储单信息给SMF
* 提供方 MES
* 调用方 SMF
......@@ -111,19 +111,17 @@ public class HikApi {
// String data = JsonUtil.toJsonStr(dataMap);
RequestParam info = new RequestParam(getReqCode(), userName, dataMap);
HikApiRequest request = new HikApiRequest(1, url,config.key_1_transferOrderApi,config.secret_1_transferOrderApi, info,new Date());
HikApiRequest request = new HikApiRequest(1, url,config.key_1_transferOrderApi,config.secret_1_transferOrderApi, info);
log.info(apiName+" 发送 " + info.getData());
boolean needResend = false;
try {
ResponseParam responseInfo = HttpHelper.post(request);
boolean needResend=false;
if (responseInfo == null || responseInfo.getCode().equals(-1)) {
// needResend = true;
log.info(apiName+"未收到反馈");
needResend=true;
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
needResend = true;
log.info(apiName+"返回code=" + responseInfo.getCode() + ",message="+responseInfo.getMessage()+",需要重发," + JsonUtil.toJsonStr(responseInfo));
needResend=true;
log.info(apiName+"返回code=" + responseInfo.getCode() + ",message="+responseInfo.getMessage()+"," + JsonUtil.toJsonStr(responseInfo));
ApiResult apiResult=new ApiResult(responseInfo.getCode(),responseInfo.getMessage(),new ArrayList<>());
return apiResult;
} else {
......@@ -133,17 +131,17 @@ public class HikApi {
ApiResult apiResult=new ApiResult(0,"",list);
return apiResult;
}
if(needResend){
HikApiCache.addFailedRequest(request,responseInfo);
}
} catch (Exception e) {
log.error(apiName+" 出错", e);
}
if(needResend){
HikApiCache.addFailedRequest(request);
}
return new ApiResult(-1,"获取转储入库单失败","");
}
/**
* 7.2转储单入库过账接口
* 7.2转储单入库过账接口 需要重发
* @param userName
* @param inInfo
* @return 返回记录转储过账信息 是否成功,true=成功
......@@ -163,15 +161,15 @@ public class HikApi {
// String data = JsonUtil.toJsonStr(dataMap);
RequestParam info = new RequestParam(getReqCode(), userName, dataMap);
HikApiRequest request = new HikApiRequest(2, url,config.key_2_transferOrderInApi,config.secret_2_transferOrderInApi, info, new Date());
HikApiRequest request = new HikApiRequest(2, url,config.key_2_transferOrderInApi,config.secret_2_transferOrderInApi, info);
log.info(apiName+" 发送 " + info.getData());
boolean needResend = false;
try {
boolean needResend = false;
ResponseParam responseInfo = HttpHelper.post(request);
if (responseInfo == null || responseInfo.getCode().equals(-1)) {
// needResend = true;
log.info(apiName+"未收到反馈");
needResend = true;
log.info(apiName+"未收到反馈,需要重发");
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
needResend = true;
......@@ -180,17 +178,17 @@ public class HikApi {
log.info(apiName+" 返回" + JsonUtil.toJsonStr(responseInfo));
return true;
}
if(needResend){
HikApiCache.addFailedRequest(request,responseInfo);
}
} catch (Exception e) {
log.error(apiName+"出错", e);
}
if(needResend){
HikApiCache.addFailedRequest(request);
}
return false;
}
/**
* 7.3排程发料过账接口
* 7.3排程发料过账接口 需要重发
* @param userName
* @param param
* @return 返回保存备料信息是否成功,true=成功
......@@ -221,15 +219,15 @@ public class HikApi {
// String data = JsonUtil.toJsonStr(dataMap);
RequestParam info = new RequestParam(getReqCode(), userName, dataMap);
HikApiRequest request = new HikApiRequest(3, url,config.key_3_scheduleTaskApi,config.secret_3_scheduleTaskApi,info, new Date());
HikApiRequest request = new HikApiRequest(3, url,config.key_3_scheduleTaskApi,config.secret_3_scheduleTaskApi,info);
log.info(apiName+" 发送 " + info.getData());
boolean needResend = false;
try {
ResponseParam responseInfo = HttpHelper.post(request);
boolean needResend = false;
if (responseInfo == null || responseInfo.getCode().equals(-1)) {
// needResend = true;
log.info(apiName+"未收到反馈");
needResend = true;
log.info(apiName+"未收到反馈,需要重发");
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
needResend = true;
......@@ -238,13 +236,13 @@ public class HikApi {
log.info(apiName+" 返回" + JsonUtil.toJsonStr(responseInfo));
return true;
}
if(needResend){
HikApiCache.addFailedRequest(request,responseInfo);
}
} catch (Exception e) {
log.error(apiName+"出错", e);
}
if(needResend){
HikApiCache.addFailedRequest(request);
}
return false;
}
......@@ -269,19 +267,16 @@ public class HikApi {
// String data = JsonUtil.toJsonStr(dataMap);
// data String 41 是 料盘ID
RequestParam info = new RequestParam(getReqCode(), userName, dataMap);
HikApiRequest request = new HikApiRequest(4, url, config.key_4_returnMaterialApi,config.secret_4_returnMaterialApi, info,new Date());
HikApiRequest request = new HikApiRequest(4, url, config.key_4_returnMaterialApi,config.secret_4_returnMaterialApi, info);
log.info(apiName+" 发送" + info.getData());
boolean needResend = false;
try {
ResponseParam responseInfo = HttpHelper.post(request);
if (responseInfo == null || responseInfo.getCode().equals(-1)) {
// needResend = true;
log.info(apiName+"未收到反馈");
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
needResend = true;
log.info(apiName+"返回code=" + responseInfo.getCode() + ",需要重发," + JsonUtil.toJsonStr(responseInfo));
log.info(apiName+"返回code=" + responseInfo.getCode() + "," + JsonUtil.toJsonStr(responseInfo));
} else {
log.info(apiName+" 返回" + JsonUtil.toJsonStr(responseInfo));
Map<String,Object> rdataMap= JsonUtil.toMap(responseInfo.getDataStr());
......@@ -293,15 +288,12 @@ public class HikApi {
} catch (Exception e) {
log.error(apiName+"出错", e);
}
if(needResend){
HikApiCache.addFailedRequest(request);
}
return -1;
}
/**
* 7.5 入库上架过账接口
* 7.5 入库上架过账接口 需要重发
* @param userName
* @param param
* @return 入库上架过账 是否成功,true=成功
......@@ -345,15 +337,15 @@ public class HikApi {
// String data = JsonUtil.toJsonStr(dataMap);
RequestParam info = new RequestParam(getReqCode(), userName, dataMap);
HikApiRequest request = new HikApiRequest(5, url,config.key_5_putInApi,config.secret_5_putInApi, info, new Date());
HikApiRequest request = new HikApiRequest(5, url,config.key_5_putInApi,config.secret_5_putInApi, info);
log.info(apiName+" 发送 " + info.getData());
boolean needResend = false;
try {
ResponseParam responseInfo = HttpHelper.post(request);
boolean needResend = false;
if (responseInfo == null || responseInfo.getCode().equals(-1)) {
// needResend = true;
log.info(apiName+"未收到反馈");
needResend = true;
log.info(apiName+"未收到反馈,需要重发");
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
needResend = true;
......@@ -362,18 +354,18 @@ public class HikApi {
log.info(apiName+" 返回" + JsonUtil.toJsonStr(responseInfo));
return true;
}
if(needResend){
HikApiCache.addFailedRequest(request,responseInfo);
}
} catch (Exception e) {
log.error(apiName+"出错", e);
}
if(needResend){
HikApiCache.addFailedRequest(request);
}
return false;
}
/**
* 7.6 出库下架过账接口
* 7.6 出库下架过账接口 需要重发
* @param userName
* @param param
* @return 保存下架过账信息 是否成功,true=成功
......@@ -388,8 +380,9 @@ public class HikApi {
if(ObjectUtil.isEmpty(param.getLgort())&&ObjectUtil.isNotEmpty(config.lgort)){
param.setLgort(config.lgort);
}
// warehousingType Integer 是 出库类型(0普通出库1并盘出库 2湿敏出库)
// warehousingType Integer 是 出库类型(0普通出库1并盘出库 2湿敏出库 3线边仓间转储出库 4预留单出库)
// trayId String 41 是 料盘ID/唯一码
// docNo String 否 单据号,备注:如果出库类型为3,4则填写预留单号,必填,其他非必填
// qty Integer 是 数量
// baseCode String 16 是 基地
// lgort String 16 是 库位
......@@ -399,22 +392,23 @@ public class HikApi {
dataMap.put("qty", param.getQty());//数量
dataMap.put("baseCode", param.getBaseCode());//基地
dataMap.put("lgort", param.getLgort());//库位
if(param.getOutType().equals(3)||param.getOutType().equals(4)) {
dataMap.put("docNo", param.getDocNo());//如果出库类型为3,4则填写预留单号,必填,其他非必填
}
// String data = JsonUtil.toJsonStr(dataMap);
RequestParam info = new RequestParam(getReqCode(), userName, dataMap);
HikApiRequest request = new HikApiRequest(6, url,config.key_6_checkOutApi,config.secret_6_checkOutApi, info, new Date());
HikApiRequest request = new HikApiRequest(6, url,config.key_6_checkOutApi,config.secret_6_checkOutApi, info);
log.info(apiName+" 发送 " + info.getData());
boolean needResend = false;
try {
ResponseParam responseInfo = HttpHelper.post(request);
boolean needResend = false;
if (responseInfo == null || responseInfo.getCode().equals(-1)) {
// needResend = true;
log.info(apiName+"未收到反馈");
needResend = true;
log.info(apiName+"未收到反馈,需要重发");
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
needResend = true;
......@@ -423,13 +417,13 @@ public class HikApi {
log.info(apiName+" 返回" + JsonUtil.toJsonStr(responseInfo));
return true;
}
if(needResend){
HikApiCache.addFailedRequest(request,responseInfo);
}
} catch (Exception e) {
log.error(apiName+"出错", e);
}
if(needResend){
HikApiCache.addFailedRequest(request);
}
return false;
}
......@@ -440,23 +434,20 @@ public class HikApi {
* @return 保存下架过账信息 是否成功,true=成功
*/
public static ApiResult updateOrderApi(String userName, String orderNo){
boolean needResend = false;
String apiName="Hik 工单发料状态查询接口 (updateOrderApi): ";
String url = getUrl( config.addr_7_updateOrderApi,"updateOrderApi");
// data String 16 是 工单号/合单号
RequestParam info = new RequestParam(getReqCode(), userName, orderNo);
HikApiRequest request = new HikApiRequest(6, url,config.key_7_updateOrderApi,config.secret_7_updateOrderApi , info,new Date());
HikApiRequest request = new HikApiRequest(6, url,config.key_7_updateOrderApi,config.secret_7_updateOrderApi , info );
// List<Object> resultList=new ArrayList<>();
log.info(apiName+" 发送" + info.getData());
try {
ResponseParam responseInfo = HttpHelper.post(request);
if (responseInfo == null || responseInfo.getCode().equals(-1)) {
// needResend = true;
log.info(apiName+"未收到反馈");
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
needResend = true;
log.info(apiName+"返回code=" + responseInfo.getCode() + ",需要重发," + JsonUtil.toJsonStr(responseInfo));
}
else if(responseInfo.getCode().equals(33)){
......@@ -464,26 +455,17 @@ public class HikApi {
//工单已关闭
log.info(apiName+"返回code=" + responseInfo.getCode() + ",工单已关闭,无法出库" );
return new ApiResult(33,"工单已关闭,无法出库",new ArrayList<>());
// resultList.add(33);
// resultList.add(new ArrayList<>());
// return resultList;
}
else {
log.info(apiName + "返回" + JsonUtil.toJsonStr(responseInfo));
String dataStr = responseInfo.getDataStr();
List<HikOrderInfo> list = JsonUtil.toList(dataStr, HikOrderInfo .class);
return new ApiResult(responseInfo.getCode(),responseInfo.getMessage(),new ArrayList<>());
// resultList.add(responseInfo.getCode());
// resultList.add(list);
// return resultList;
}
} catch (Exception e) {
log.error(apiName+"出错", e);
}
if(needResend){
HikApiCache.addFailedRequest(request);
}
return null;
}
......@@ -518,19 +500,15 @@ public class HikApi {
// String data = JsonUtil.toJsonStr(dataMap);
RequestParam info = new RequestParam(getReqCode(), userName, dataMap);
HikApiRequest request = new HikApiRequest(8, url,config.key_8_riCheckApi,config.secret_8_riCheckApi, info, new Date());
HikApiRequest request = new HikApiRequest(8, url,config.key_8_riCheckApi,config.secret_8_riCheckApi, info);
log.info(apiName+" 发送 " + info.getData());
boolean needResend = false;
try {
ResponseParam responseInfo = HttpHelper.post(request);
if (responseInfo == null || responseInfo.getCode().equals(-1)) {
// needResend = true;
log.info(apiName+"未收到反馈");
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
needResend = true;
log.info(apiName+"返回code=" + responseInfo.getCode() + ",需要重发," + JsonUtil.toJsonStr(responseInfo));
log.info(apiName+"返回code=" + responseInfo.getCode() + "," + JsonUtil.toJsonStr(responseInfo));
} else {
return responseInfo;
}
......@@ -538,9 +516,6 @@ public class HikApi {
} catch (Exception e) {
log.error(apiName+"出错", e);
}
if(needResend){
HikApiCache.addFailedRequest(request);
}
return null;
}
......@@ -556,45 +531,38 @@ public class HikApi {
// List<Object> resultList=new ArrayList<>();
// data String 41 是 补料单号
RequestParam info = new RequestParam(getReqCode(), userName, replenishmentNo);
HikApiRequest request = new HikApiRequest(9, url,config.key_9_updateRepOrderApi,config.secret_9_updateRepOrderApi, info, new Date());
HikApiRequest request = new HikApiRequest(9, url,config.key_9_updateRepOrderApi,config.secret_9_updateRepOrderApi, info);
log.info(apiName+" 发送" + info.getData());
boolean needResend = false;
try {
ResponseParam responseInfo = HttpHelper.post(request);
boolean needResend = false;
if (responseInfo == null || responseInfo.getCode().equals(-1)) {
// needResend = true;
log.info(apiName+"未收到反馈");
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
needResend = true;
log.info(apiName+"返回code=" + responseInfo.getCode() + ",需要重发," + JsonUtil.toJsonStr(responseInfo));
log.info(apiName+"返回code=" + responseInfo.getCode() + "," + JsonUtil.toJsonStr(responseInfo));
} else if(responseInfo.getCode().equals(33)){
// code Integer 结果码(33关闭)
//工单已关闭
log.info(apiName+"返回code=" + responseInfo.getCode() + ",工单已关闭,无法出库" );
ApiResult apiResult=new ApiResult(33,"工单已关闭,无法出库",new ArrayList<>());
return apiResult;
// resultList.add(33);
// resultList.add(new ArrayList<>());
// return resultList;
} else {
log.info(apiName + "返回" + JsonUtil.toJsonStr(responseInfo));
String dataStr = responseInfo.getDataStr();
List<HikOrderInfo> list = JsonUtil.toList(dataStr, HikOrderInfo .class);
ApiResult apiResult=new ApiResult(responseInfo.getCode(),responseInfo.getMessage(),list);
return apiResult;
// resultList.add(responseInfo.getCode());
// resultList.add(list);
// return resultList;
}
} catch (Exception e) {
log.error(apiName+"出错", e);
}
if(needResend){
HikApiCache.addFailedRequest(request);
}
// if(needResend){
// HikApiCache.addFailedRequest(request);
// }
return null;
}
......@@ -619,18 +587,18 @@ public class HikApi {
// String data=JsonUtil.toJsonStr(dataMap);
RequestParam info = new RequestParam(getReqCode(), userName, dataMap);
HikApiRequest request = new HikApiRequest(10, url,config.key_10_reservedOrderApi,config.secret_10_reservedOrderApi, info, new Date());
HikApiRequest request = new HikApiRequest(10, url,config.key_10_reservedOrderApi,config.secret_10_reservedOrderApi, info);
log.info(apiName+" 发送 " + info.getData());
boolean needResend = false;
try {
ResponseParam responseInfo = HttpHelper.post(request);
boolean needResend = false;
if (responseInfo == null || responseInfo.getCode().equals(-1)) {
// needResend = true;
log.info(apiName+"未收到反馈");
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
needResend = true;
log.info(apiName+"返回code=" + responseInfo.getCode() + ",需要重发," + JsonUtil.toJsonStr(responseInfo));
log.info(apiName+"返回code=" + responseInfo.getCode() + "," + JsonUtil.toJsonStr(responseInfo));
return new ApiResult(responseInfo.getCode(), responseInfo.getMessage(), new ArrayList<>());
} else {
log.info(apiName + "返回" + JsonUtil.toJsonStr(responseInfo));
......@@ -642,13 +610,10 @@ public class HikApi {
} catch (Exception e) {
log.error(apiName+"出错", e);
}
if(needResend){
HikApiCache.addFailedRequest(request);
}
return new ApiResult(-1,"获取转储出库单失败","");
}
/**
* 7.11订单发料完成通知接口
* 7.11订单发料完成通知接口 需要重发
* @param userName
* @param orderNo 工单号
* @return 返回备料列表
......@@ -670,15 +635,14 @@ public class HikApi {
String url = getUrl(config.addr_11_orderEndApi, "orderEndApi");
// data String 41 是 补料单号
RequestParam info = new RequestParam(getReqCode(), userName, orderNo);
HikApiRequest request = new HikApiRequest(11, url,config.key_11_orderEndApi,config.secret_11_orderEndApi, info, new Date());
HikApiRequest request = new HikApiRequest(11, url,config.key_11_orderEndApi,config.secret_11_orderEndApi, info);
log.info(apiName+" 发送" + info.getData());
boolean needResend = false;
try {
ResponseParam responseInfo = HttpHelper.post(request);
boolean needResend = false;
if (responseInfo == null || responseInfo.getCode().equals(-1)) {
// needResend = true;
log.info(apiName+"未收到反馈");
needResend = true;
log.info(apiName+"未收到反馈 ,需要重发");
} else if (responseInfo.getCode().equals(CODE_PARAMERROR) || responseInfo.getCode().equals(CODE_REPEAT)) {
needResend = true;
......@@ -687,13 +651,13 @@ public class HikApi {
log.info(apiName+" 返回" + JsonUtil.toJsonStr(responseInfo));
return true;
}
if(needResend){
HikApiCache.addFailedRequest(request,responseInfo);
}
} catch (Exception e) {
log.error(apiName+"出错", e);
}
if(needResend){
HikApiCache.addFailedRequest(request);
}
return false;
}
}
package com.neotel.smfcore.hikvision;
import com.neotel.smfcore.common.exception.ApiException;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.hikvision.bean.api.HikApiRequest;
......@@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import javax.annotation.PostConstruct;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
......@@ -30,6 +31,22 @@ public class HikApiCache {
private static boolean isProcessTimer = false;
@PostConstruct
public void Init(){
initApiRequestMap();
}
/**
* 加载请求指令信息
*/
private static void initApiRequestMap() {
failedRequestMap = new ConcurrentHashMap<>();
Map<String, HikApiRequest> dbFailedRequestMap = dataCache.getCache(Constants.CACHE_failedRequestMap);
if (dbFailedRequestMap != null) {
failedRequestMap.putAll(dbFailedRequestMap);
log.info("共加载到接口异常:" + failedRequestMap.size() + "条");
}
}
/**
* 定时器,每10秒执行一次
*/
......@@ -37,7 +54,7 @@ public class HikApiCache {
if (!isProcessTimer) {
isProcessTimer = true;
try {
sendFailedRequest();
// sendFailedRequest();
} catch (Exception e) {
log.error("发送失败请求定时器执行出错:" + e.getMessage());
} finally {
......@@ -46,13 +63,24 @@ public class HikApiCache {
}
}
public static void addFailedRequest(HikApiRequest apiRequest) {
// String mapKey = apiRequest.getParam().getReqCode();
// if (failedRequestMap.get(mapKey) == null) {
// log.info(mapKey + "通知指令发送到Hik失败,加入到缓存");
// failedRequestMap.put(apiRequest.getParam().getReqCode(), apiRequest);
// dataCache.updateCache(Constants.CACHE_failedRequestMap, failedRequestMap);
// }
public static List<HikApiRequest> getAllRequestList(){
return new ArrayList<>(failedRequestMap.values());
}
public static HikApiRequest getRequest(String req){
return failedRequestMap.get(req);
}
public static void addFailedRequest(HikApiRequest apiRequest, ResponseParam responseParam) {
String mapKey = apiRequest.getParam().getReqCode();
apiRequest.setResponseParam(responseParam);
apiRequest.setUpdatetime(new Date());
if (failedRequestMap.get(mapKey) == null) {
log.info(mapKey + "通知指令发送到Hik失败,加入到缓存");
}
failedRequestMap.put(apiRequest.getParam().getReqCode(), apiRequest);
dataCache.updateCache(Constants.CACHE_failedRequestMap, failedRequestMap);
}
public static void removeFailedRequest(HikApiRequest apiRequest) {
......@@ -64,26 +92,14 @@ public class HikApiCache {
}
}
/**
* 加载请求指令信息
*/
private static void initApiRequestMap() {
if (failedRequestMap == null) {
failedRequestMap = new ConcurrentHashMap<>();
Map<String, HikApiRequest> dbFailedRequestMap = dataCache.getCache(Constants.CACHE_failedRequestMap);
if (dbFailedRequestMap != null) {
failedRequestMap.putAll(dbFailedRequestMap);
log.info("当前发送通知失败指令:" + failedRequestMap);
}
}
}
/**
* 获取失败列表,进行定时发送
*/
private static void sendFailedRequest() throws ApiException {
public static void sendFailedRequest() {
if(failedRequestMap==null){
if (failedRequestMap == null) {
initApiRequestMap();
}
......@@ -97,21 +113,36 @@ public class HikApiCache {
});
for (HikApiRequest apiRequest : failedList) {
ResponseParam responseParam = HttpHelper.post(apiRequest);
reSendRequest(apiRequest);
}
}
public static ResponseParam reSendRequest(HikApiRequest apiRequest) {
ResponseParam responseParam =null;
try {
String interName = "Hik 接口" + apiRequest.getApiType() + " 重发:";
responseParam = HttpHelper.post(apiRequest);
boolean needResend = false;
if (responseParam == null || responseParam.getCode().equals(-1)) {
needResend = true;
log.info("Hik 转储单接口 (transferOrderThread): 未收到返回值,需要重发");
log.info(interName + ",需要重发");
} else if (responseParam.getCode().equals(HikApi.CODE_PARAMERROR) || responseParam.getCode().equals(HikApi.CODE_REPEAT)) {
needResend = true;
log.info("Hik 转储单接口 (transferOrderThread): 返回code=" + responseParam.getCode() + ",需要重发," + JsonUtil.toJsonStr(responseParam));
log.info(interName + ", 返回code=" + responseParam.getCode() + ",需要重发," + JsonUtil.toJsonStr(responseParam));
} else {
log.info("Hik 转储单接口 (transferOrderThread): 返回" + JsonUtil.toJsonStr(responseParam));
// Map<String, Object> result = JsonUtil.toMap(responseParam.getData());
// return result;
if (responseParam.getCode().equals(0)) {
log.info(interName + ",发送成功,删除接口异常,返回" + JsonUtil.toJsonStr(responseParam));
removeFailedRequest(apiRequest);
} else {
log.info(interName + ",返回" + JsonUtil.toJsonStr(responseParam));
}
}
addFailedRequest(apiRequest, responseParam);
return responseParam;
} catch (Exception ex) {
throw new ValidateException("smfcore.error", "出错{0}", new String[]{ex.toString()});
}
}
}
......@@ -21,22 +21,23 @@ public class InOutApiInfo {
// baseCode String 16 是 基地
// lgort String 16 是 库位
// warehousingType Integer 是 出库类型(0普通出库1并盘出库 2湿敏出库)
// warehousingType Integer 是 出库类型(0普通出库1并盘出库 2湿敏出库 3线边仓间转储出库 4预留单出库)
// trayId String 41 是 料盘ID/唯一码
// docNo String 否 单据号,备注:如果出库类型为3,4则填写预留单号,必填,其他非必填
// qty Integer 是 数量
// baseCode String 16 是 基地
// lgort String 16 是 库位
public static InOutApiInfo inputInfo(int inType,String trayId,int qty)
{
return new InOutApiInfo(inType,0,trayId,qty,"","","");
return new InOutApiInfo(inType,0,trayId,qty,"","","","");
}
public static InOutApiInfo inputInfo(int inType,String trayId,int qty,String jobNo)
{
return new InOutApiInfo(inType,0,trayId,qty,"","",jobNo);
return new InOutApiInfo(inType,0,trayId,qty,"","",jobNo,"");
}
public static InOutApiInfo outInfo(int outType,String trayId,int qty,String baseCode,String lgort){
return new InOutApiInfo(0,outType,trayId,qty,baseCode,lgort,"");
public static InOutApiInfo outInfo(int outType,String trayId,int qty,String baseCode,String lgort,String docNo){
return new InOutApiInfo(0,outType,trayId,qty,baseCode,lgort,"",docNo);
}
/**
......@@ -68,4 +69,8 @@ public class InOutApiInfo {
* 入库类型为退料入库的需要提供工单号
*/
private String jobNo;
/**
* docNo String 否 单据号,备注:如果出库类型为3,4则填写预留单号,必填,其他非必填
*/
private String docNo;
}
......@@ -13,8 +13,23 @@ import java.util.Map;
@NoArgsConstructor
public class HikApiRequest implements Serializable {
public HikApiRequest(int apiType,String url,String key,String secret,RequestParam param){
this.apiType=apiType;
this.url=url;
this.key=key;
this.secret=secret;
this.param=param;
this.createTime=new Date();
this.updatetime=new Date();
}
/**
* 消息类型
* 2=7.2转储单入库过账接口
* 3=7.3排程发料过账接口
* 5=7.5 入库上架过账接口
* 6=7.6 出库下架过账接口
* 11=7.11订单发料完成通知接口
*/
private int apiType=0;
......@@ -43,6 +58,17 @@ public class HikApiRequest implements Serializable {
*/
private Date createTime;
/**
* 最后更新时间
*/
private Date updatetime;
/**
* 最后一次接口返回值
*/
private ResponseParam responseParam;
public String getParamJson(){
Map<String, Object> params = new HashMap<>();
params.put("reqCode", param.getReqCode());
......@@ -52,4 +78,8 @@ public class HikApiRequest implements Serializable {
String jsonStr = JsonUtil.toJsonStr(params);
return jsonStr;
}
public String getParamDataStr(){
return JsonUtil.toJsonStr(param.getData());
}
}
......@@ -72,10 +72,16 @@ public class HttpHelper {
log.info("[" + url + "][" + key + "][" + secret + "]发送 " + jsonStr + ",返回值:" + result);
}
return responseInfo;
} catch (Exception e) {
}
catch (ApiException ex){
log.error("[" + url + "][" + key + "][" + secret + "]发送 " + jsonStr + ",出错:", ex);
return new ResponseParam(param.getReqCode(),-1,ex.getMessage(),ex);
}
catch (Exception e) {
log.error("[" + url + "][" + key + "][" + secret + "]发送 " + jsonStr + ",出错:", e);
return new ResponseParam(param.getReqCode(),-1,e.getMessage(),e);
}
return null;
}
public static String postJson(String url, Map<String, Object> params,String key,String secret ) throws ApiException {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!