package com.zy.acs.manager.core.integrate.wms;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.TypeReference;
|
import com.zy.acs.framework.common.Cools;
|
import com.zy.acs.framework.common.SnowflakeIdWorker;
|
import com.zy.acs.manager.common.config.UplinkProperties;
|
import com.zy.acs.manager.common.constant.Constants;
|
import com.zy.acs.manager.common.utils.HttpGo;
|
import com.zy.acs.manager.core.domain.type.NamespaceType;
|
import com.zy.acs.manager.core.integrate.dto.FaultUplinkParam;
|
import com.zy.acs.manager.core.integrate.dto.HttpResult;
|
import com.zy.acs.manager.core.integrate.dto.TaskUplinkParam;
|
import com.zy.acs.manager.core.service.ThreadPoolRegulator;
|
import com.zy.acs.manager.manager.entity.Bus;
|
import com.zy.acs.manager.manager.entity.IntegrationRecord;
|
import com.zy.acs.manager.manager.entity.VehFaultRec;
|
import com.zy.acs.manager.manager.enums.IntegrationDirectionType;
|
import com.zy.acs.manager.manager.enums.StatusType;
|
import com.zy.acs.manager.manager.service.BusService;
|
import com.zy.acs.manager.manager.service.IntegrationRecordService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.PostConstruct;
|
import java.time.Duration;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
@Slf4j
|
@Service
|
public class FaultReportService {
|
|
|
private HttpGo http;
|
|
private long timeoutSeconds = 15;
|
|
@PostConstruct
|
public void init() {
|
this.http = HttpGo.builder()
|
.connectTimeout(Duration.ofSeconds(timeoutSeconds))
|
.readTimeout(Duration.ofSeconds(timeoutSeconds))
|
.build();
|
}
|
|
public boolean reportFinished(VehFaultRec vehFaultRec, String reportFaultUrl ) {
|
if (Cools.isEmpty(vehFaultRec)) {
|
return false;
|
}
|
|
// headers
|
Map<String, String> headers = new HashMap<>();
|
// params
|
FaultUplinkParam param = new FaultUplinkParam();
|
param.setFaultNo( vehFaultRec.getFaultNo());
|
param.setFaultName( vehFaultRec.getFaultName());
|
param.setAgvId(vehFaultRec.getAgvId$());
|
param.setHappenTime( vehFaultRec.getHappenTime());
|
|
|
HttpResult<?> result;
|
try {
|
result = postForResult(reportFaultUrl, headers, param);
|
|
Integer code = result.getCode();
|
if (null == code || 200 != code) {
|
return false;
|
}
|
|
} catch (Exception e) {
|
log.error("Uplink report failed, taskId={}",
|
JSON.toJSONString(vehFaultRec),
|
e);
|
return false;
|
} finally {
|
|
}
|
return true;
|
}
|
|
private HttpResult<?> postForResult(String url, Map<String, String> headers, FaultUplinkParam param) throws Exception {
|
String json = JSON.toJSONString(param);
|
HttpGo.HttpResponse response = this.http.postJson(url, headers, json);
|
|
int status = response.statusCode();
|
if (status != 200) {
|
throw new RuntimeException("Uplink HTTP error: status=" + status + ", body=" + response.body());
|
}
|
|
String body = response.body();
|
if (Cools.isEmpty(body)) {
|
throw new RuntimeException("Uplink empty response body.");
|
}
|
|
HttpResult<?> result = JSON.parseObject(body, new TypeReference<HttpResult<?>>() {});
|
if (result == null) {
|
throw new RuntimeException("Uplink parse HttpResult failed: body=" + body);
|
}
|
return result;
|
}
|
|
|
}
|