diff --git a/src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java b/src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java index 32e0ba7..0344404 100644 --- a/src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java +++ b/src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java @@ -52,6 +52,8 @@ import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; import org.springframework.util.StringUtils; import org.springframework.web.client.RestTemplate; @@ -5084,6 +5086,8 @@ public class ScheduleServiceImpl implements ScheduleService { body.put("process", workCenterNo); body.put("rollLabels", rollNos); body.put("machineNo", resourceId); + logger.info("TID分卷校验请求: site={}, orderNo={}, seqNo={}", + inData.getSite(), inData.getOrderNo(), inData.getSeqNo()); postMesLogs("/checkRolls", body, "TID分卷校验"); scheduleMapper.updateTidPassFlag(inData.getSite(), inData.getSeqNo(), rollNos); } @@ -5177,11 +5181,22 @@ public class ScheduleServiceImpl implements ScheduleService { private void postMesLogs(String path, Map body, String failLabel) { HttpHeaders headers = new HttpHeaders(); headers.setBasicAuth(mesLogsUsername, mesLogsPassword, StandardCharsets.UTF_8); - headers.setContentType(MediaType.APPLICATION_JSON); + headers.setContentType(MediaType.MULTIPART_FORM_DATA); + MultiValueMap form = new LinkedMultiValueMap<>(); + Map formLog = new LinkedHashMap<>(); + if (body != null) { + for (Map.Entry entry : body.entrySet()) { + String fieldValue = toMesFormFieldValue(entry.getValue()); + form.add(entry.getKey(), fieldValue); + formLog.put(entry.getKey(), fieldValue); + } + } String requestUrl = buildMesLogsUrl(path); + logger.info("{}请求: url={}, contentType=multipart/form-data, form={}", + failLabel, requestUrl, JSON.toJSONString(formLog)); ResponseEntity response; try { - response = restTemplate.exchange(requestUrl, HttpMethod.POST, new HttpEntity<>(body, headers), String.class); + response = restTemplate.exchange(requestUrl, HttpMethod.POST, new HttpEntity<>(form, headers), String.class); } catch (Exception e) { logger.error("{}调用失败", failLabel, e); throw new XJException(failLabel + "失败: " + e.getMessage()); @@ -5218,6 +5233,16 @@ public class ScheduleServiceImpl implements ScheduleService { } } + private String toMesFormFieldValue(Object value) { + if (value == null) { + return ""; + } + if (value instanceof CharSequence || value instanceof Number || value instanceof Boolean) { + return String.valueOf(value); + } + return JSON.toJSONString(value); + } + private String buildMesLogsUrl(String path) { String baseUrl = StringUtils.hasText(mesLogsBaseUrl) ? mesLogsBaseUrl.trim() : "http://logs.bt.in/api/logs"; if (baseUrl.endsWith("/")) {