From c9f0aeb0ec22b5e70636f68b4bac3a80cc982703 Mon Sep 17 00:00:00 2001 From: zhangji <1315410739@qq.com> Date: Mon, 14 Jul 2025 10:28:02 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=A9=E5=8D=96=E6=9C=BA=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/device/DeviceServiceImpl.java | 90 +++++++++++++++++++ .../service/device/bo/DispenseRequestBo.java | 26 ++++++ .../service/device/bo/DispenseResponseBo.java | 13 +++ .../src/main/resources/application.yaml | 4 +- 4 files changed, 131 insertions(+), 2 deletions(-) create mode 100644 yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/device/bo/DispenseRequestBo.java create mode 100644 yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/device/bo/DispenseResponseBo.java diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/device/DeviceServiceImpl.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/device/DeviceServiceImpl.java index 96de46d..bf90cec 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/device/DeviceServiceImpl.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/device/DeviceServiceImpl.java @@ -1,10 +1,16 @@ package cn.iocoder.yudao.module.product.service.device; +import cn.iocoder.yudao.module.product.service.device.bo.DispenseRequestBo; +import cn.iocoder.yudao.module.product.service.device.bo.DispenseResponseBo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.*; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; import java.util.*; import cn.iocoder.yudao.module.product.controller.admin.device.vo.*; import cn.iocoder.yudao.module.product.dal.dataobject.device.DeviceDO; @@ -13,6 +19,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.product.dal.mysql.device.DeviceMapper; +import org.springframework.web.client.RestTemplate; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.*; @@ -24,16 +31,62 @@ import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.*; */ @Service @Validated +@Slf4j public class DeviceServiceImpl implements DeviceService { @Resource private DeviceMapper deviceMapper; + // TOKEN + @Value("${xr.cabinet.token}") + private String token; + + //API_URL + @Value("${xr.cabinet.api_url}") + private String api_url; + @Override public Long createDevice(DeviceSaveReqVO createReqVO) { // 插入 DeviceDO device = BeanUtils.toBean(createReqVO, DeviceDO.class); deviceMapper.insert(device); + DispenseRequestBo request = new DispenseRequestBo(); + request.setDeviceId(createReqVO.getDeviceId()); + request.setMessage(createReqVO.getProductUrl()+","+createReqVO.getFileUrl()); + // 设置请求头 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.set("Authorization", token); + + // 创建请求实体 + HttpEntity requestEntity = new HttpEntity<>(request, headers); + + // 创建RestTemplate + RestTemplate restTemplate = new RestTemplate(); + + try { + // 发送请求并解析响应 + ResponseEntity response = restTemplate.exchange( + api_url, + HttpMethod.POST, + requestEntity, + DispenseResponseBo.class + ); + + DispenseResponseBo body = response.getBody(); + if (body != null) { + System.out.println("响应结果: " + body); + if (body.getCode() == 0) { + System.out.println("上传成功!详情: " + body.getData()); + } else { + System.out.println("操作失败!原因: " + body.getMsg()); + log.error("设备--{}:[图片上传失败]:原因: {}",createReqVO.getDeviceId(), body.getMsg()); + } + } + } catch (Exception e) { + System.err.println("图片上传请求异常: " + e.getMessage()); + log.error("设备--{}:[图片上传异常]:原因: {}",createReqVO.getDeviceId(), e.getMessage()); + } // 返回 return device.getId(); } @@ -44,6 +97,43 @@ public class DeviceServiceImpl implements DeviceService { validateDeviceExists(updateReqVO.getId()); // 更新 DeviceDO updateObj = BeanUtils.toBean(updateReqVO, DeviceDO.class); + DispenseRequestBo request = new DispenseRequestBo(); + request.setDeviceId(updateReqVO.getDeviceId()); + request.setMessage(updateReqVO.getProductUrl()+","+updateReqVO.getFileUrl()); + // 设置请求头 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.set("Authorization", token); + + // 创建请求实体 + HttpEntity requestEntity = new HttpEntity<>(request, headers); + + // 创建RestTemplate + RestTemplate restTemplate = new RestTemplate(); + + try { + // 发送请求并解析响应 + ResponseEntity response = restTemplate.exchange( + api_url, + HttpMethod.POST, + requestEntity, + DispenseResponseBo.class + ); + + DispenseResponseBo body = response.getBody(); + if (body != null) { + System.out.println("响应结果: " + body); + if (body.getCode() == 0) { + System.out.println("上传成功!详情: " + body.getData()); + } else { + System.out.println("操作失败!原因: " + body.getMsg()); + log.error("设备--{}:[图片上传失败]:原因: {}",updateReqVO.getDeviceId(), body.getMsg()); + } + } + } catch (Exception e) { + System.err.println("图片上传请求异常: " + e.getMessage()); + log.error("设备--{}:[图片上传异常]:原因: {}",updateReqVO.getDeviceId(), e.getMessage()); + } deviceMapper.updateById(updateObj); } diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/device/bo/DispenseRequestBo.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/device/bo/DispenseRequestBo.java new file mode 100644 index 0000000..f3812bc --- /dev/null +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/device/bo/DispenseRequestBo.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.product.service.device.bo; + +import lombok.Data; + +/** + * 货道机发货请求 + */ +@Data +public class DispenseRequestBo { + //设备IMEI + private String deviceId; + + //参数格式:T,C&N,C&N,C&N + // T:通道类型(1:货道,2:货道带调货检测:0x30:柜门:0x31:柜门带反馈) + // C:货道或柜门编号,多个货道同时出货逗号分隔 =(1--80)指定货道出货 + // N:出货数量 + private String message; + + public DispenseRequestBo(String deviceId, String message) { + this.deviceId = deviceId; + this.message = message; + } + + public DispenseRequestBo() { + } +} diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/device/bo/DispenseResponseBo.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/device/bo/DispenseResponseBo.java new file mode 100644 index 0000000..eb43458 --- /dev/null +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/device/bo/DispenseResponseBo.java @@ -0,0 +1,13 @@ +package cn.iocoder.yudao.module.product.service.device.bo; + +import lombok.Data; + +/** + * 货道机发货请求 + */ +@Data +public class DispenseResponseBo { + private int code; + private String msg; + private String data; +} diff --git a/yudao-server/src/main/resources/application.yaml b/yudao-server/src/main/resources/application.yaml index 339af30..4f591b4 100644 --- a/yudao-server/src/main/resources/application.yaml +++ b/yudao-server/src/main/resources/application.yaml @@ -3,8 +3,8 @@ spring: name: yudao-server profiles: -# active: prod - active: local + active: prod +# active: local main: allow-circular-references: true # 允许循环依赖,因为项目是三层架构,无法避免这个情况。