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 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 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>() {}); if (result == null) { throw new RuntimeException("Uplink parse HttpResult failed: body=" + body); } return result; } }