package com.zy.asrs.task.handler;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.core.common.Cools;
|
import com.core.common.SpringUtils;
|
import com.core.exception.CoolException;
|
import com.zy.asrs.entity.ApiLog;
|
import com.zy.asrs.entity.param.ArmPrecomputeParam;
|
import com.zy.asrs.entity.param.OrderToLine;
|
import com.zy.asrs.service.ApiLogService;
|
import com.zy.asrs.service.BasArmRulesService;
|
import com.zy.asrs.service.OrderPakinService;
|
import com.zy.asrs.service.OrderService;
|
import com.zy.asrs.task.AbstractHandler;
|
import com.zy.asrs.task.core.ReturnT;
|
import com.zy.common.utils.HttpHandler;
|
import com.zy.common.utils.IpTools;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
@Slf4j
|
@Service
|
@Transactional
|
public class OrderToLineHandler extends AbstractHandler<String> {
|
@Autowired
|
private ApiLogService apiLogService;
|
@Autowired
|
private OrderPakinService orderPakinService;
|
|
@Value("${line.address.URL}")
|
//端口
|
private String URL;
|
|
@Value("${line.address.PATH}")
|
//审核地址
|
private String Path;
|
|
public ReturnT<String> start(OrderToLine orderToline) {
|
try{
|
String response = "";
|
boolean success = false;
|
try {
|
Map<String, Object> map = new HashMap<>();
|
map.put("appkey","ea1f0459efc02a79f046f982767939ae");
|
response = new HttpHandler.Builder()
|
.setHeaders(map)
|
.setUri(URL)
|
.setPath(Path)
|
.setJson(JSON.toJSONString(orderToline))
|
.build()
|
.doPost();
|
JSONObject jsonObject = JSON.parseObject(response);
|
if (jsonObject.getInteger("code").equals(200)) {
|
success = true;
|
orderPakinService.updateOrderStatus(orderToline.getOrderNo()); //更新订单状态 0 -> 1
|
} else {
|
log.error("下发单据!!!url:{};request:{};response:{}", URL+Path, JSON.toJSONString(orderToline), response);
|
throw new CoolException("下发单据失败");
|
}
|
} catch (Exception e) {
|
try{
|
log.error("fail==>下发单据至分拣线:"+e.getLocalizedMessage());
|
} catch (Exception e1){
|
|
}
|
// return FAIL.setMsg(e.getLocalizedMessage());
|
return FAIL;
|
} finally {
|
try {
|
if (success){
|
// 保存接口日志
|
apiLogService.save(
|
"下发单据至分拣线",
|
URL +"/"+ Path,
|
null,
|
"127.0.0.1",
|
JSON.toJSONString(orderToline),
|
response,
|
success
|
);
|
} else {
|
beforeBodyWriteCallApiLogSave(
|
"下发单据至分拣线",
|
URL +"/"+ Path,
|
null,
|
"127.0.0.1",
|
JSON.toJSONString(orderToline),
|
response,
|
success
|
);
|
}
|
} catch (Exception e) { log.error("", e); }
|
}
|
}catch (Exception e){
|
|
}
|
return SUCCESS;
|
}
|
|
public void beforeBodyWriteCallApiLogSave(String name, String url, String appkey, String ip, String request, String response, boolean success) {
|
ApiLog apiLog = apiLogService.selectOne(new EntityWrapper<ApiLog>()
|
.eq("namespace", name)
|
.eq("response", response)
|
.eq("result", success? 1:0)
|
.orderBy("create_time", false)
|
);
|
|
if (!Cools.isEmpty(apiLog)){
|
long parseLong = Long.parseLong(apiLog.getTimestamp());
|
if (new Date().getTime()-parseLong<5*1000*60){
|
return;
|
}
|
}
|
// 保存接口日志
|
apiLogService.save(
|
name,
|
url,
|
appkey,
|
ip,
|
request,
|
response,
|
success
|
);
|
}
|
}
|