From 404a882829c23a6d0e002e5133fb6fcec2d7272c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E4=BA=AC=E9=80=9A?= <2405957150@qq.com> Date: Wed, 9 Jul 2025 11:08:29 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=B5=E8=A1=A8=E8=AE=BE=E5=A4=87=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/dto/DeviceOrderInfoDTO.java | 9 ++++ .../domain/dto/DeviceOrderInfoDataDTO.java | 21 +++++++++ .../dto/DeviceOrderInfoDataListDTO.java | 38 +++++++++++++++ .../dianxin/mapper/DeviceOrderInfoMapper.java | 14 ++++++ .../service/DeviceOrderInfoService.java | 12 +++++ .../impl/DeviceOrderInfoServiceImpl.java | 16 +++++++ .../datasend/dianxin/task/StandardTask.java | 46 +++++++++++++++++++ 7 files changed, 156 insertions(+) create mode 100644 src/main/java/com/bootdo/datasend/dianxin/domain/dto/DeviceOrderInfoDataDTO.java create mode 100644 src/main/java/com/bootdo/datasend/dianxin/domain/dto/DeviceOrderInfoDataListDTO.java create mode 100644 src/main/java/com/bootdo/datasend/dianxin/mapper/DeviceOrderInfoMapper.java create mode 100644 src/main/java/com/bootdo/datasend/dianxin/service/DeviceOrderInfoService.java create mode 100644 src/main/java/com/bootdo/datasend/dianxin/service/impl/DeviceOrderInfoServiceImpl.java diff --git a/src/main/java/com/bootdo/datasend/dianxin/domain/dto/DeviceOrderInfoDTO.java b/src/main/java/com/bootdo/datasend/dianxin/domain/dto/DeviceOrderInfoDTO.java index fc29ed4..8891482 100644 --- a/src/main/java/com/bootdo/datasend/dianxin/domain/dto/DeviceOrderInfoDTO.java +++ b/src/main/java/com/bootdo/datasend/dianxin/domain/dto/DeviceOrderInfoDTO.java @@ -1,9 +1,18 @@ package com.bootdo.datasend.dianxin.domain.dto; +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; +import lombok.NoArgsConstructor; + /** * @Description DeviceOrderInfoDTO * @Author lijingtong * @Date 2025-07-09 */ +@Data +@NoArgsConstructor public class DeviceOrderInfoDTO { + + @JSONField(name = "requestData") + private DeviceOrderInfoDataDTO requestData; } diff --git a/src/main/java/com/bootdo/datasend/dianxin/domain/dto/DeviceOrderInfoDataDTO.java b/src/main/java/com/bootdo/datasend/dianxin/domain/dto/DeviceOrderInfoDataDTO.java new file mode 100644 index 0000000..d7e8e9b --- /dev/null +++ b/src/main/java/com/bootdo/datasend/dianxin/domain/dto/DeviceOrderInfoDataDTO.java @@ -0,0 +1,21 @@ +package com.bootdo.datasend.dianxin.domain.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @Description DeviceOrderInfoDataDTO + * @Author lijingtong + * @Date 2025-07-09 + */ +@Data +@NoArgsConstructor +public class DeviceOrderInfoDataDTO { + @JSONField(name = "requestFlag") + private String requestFlag; + @JSONField(name = "requestDataList") + private List requestDataList; +} diff --git a/src/main/java/com/bootdo/datasend/dianxin/domain/dto/DeviceOrderInfoDataListDTO.java b/src/main/java/com/bootdo/datasend/dianxin/domain/dto/DeviceOrderInfoDataListDTO.java new file mode 100644 index 0000000..348f40f --- /dev/null +++ b/src/main/java/com/bootdo/datasend/dianxin/domain/dto/DeviceOrderInfoDataListDTO.java @@ -0,0 +1,38 @@ +package com.bootdo.datasend.dianxin.domain.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * @Description DeviceOrderInfoDataListDTO + * @Author lijingtong + * @Date 2025-07-09 + */ +@Data +@NoArgsConstructor +public class DeviceOrderInfoDataListDTO { + // 设备(国标)编码 + @JSONField(name = "deviceSN") + private String deviceSN; + // 销售类型1-充值 2-冲正 3-退费 + @JSONField(name = "saleType") + private Integer saleType; + // 购买方式 + @JSONField(name = "buyTypeName") + private String buyTypeName; + // 订单金额 + @JSONField(name = "money") + private BigDecimal money; + // 订单时间 + @JSONField(name = "saleDate") + private String saleDate; + // 购买用户 + @JSONField(name = "ownerName") + private String ownerName; + // 房间号 + @JSONField(name = "roomNo") + private String roomNo; +} diff --git a/src/main/java/com/bootdo/datasend/dianxin/mapper/DeviceOrderInfoMapper.java b/src/main/java/com/bootdo/datasend/dianxin/mapper/DeviceOrderInfoMapper.java new file mode 100644 index 0000000..3ee930f --- /dev/null +++ b/src/main/java/com/bootdo/datasend/dianxin/mapper/DeviceOrderInfoMapper.java @@ -0,0 +1,14 @@ +package com.bootdo.datasend.dianxin.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.bootdo.datasend.dianxin.domain.DeviceOrderInfo; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description DeviceOrderInfoMapper + * @Author lijingtong + * @Date 2025-07-09 + */ +@Mapper +public interface DeviceOrderInfoMapper extends BaseMapper { +} diff --git a/src/main/java/com/bootdo/datasend/dianxin/service/DeviceOrderInfoService.java b/src/main/java/com/bootdo/datasend/dianxin/service/DeviceOrderInfoService.java new file mode 100644 index 0000000..c818d39 --- /dev/null +++ b/src/main/java/com/bootdo/datasend/dianxin/service/DeviceOrderInfoService.java @@ -0,0 +1,12 @@ +package com.bootdo.datasend.dianxin.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.bootdo.datasend.dianxin.domain.DeviceOrderInfo; + +/** + * @Description DeviceOrderInfoService + * @Author lijingtong + * @Date 2025-07-09 + */ +public interface DeviceOrderInfoService extends IService { +} diff --git a/src/main/java/com/bootdo/datasend/dianxin/service/impl/DeviceOrderInfoServiceImpl.java b/src/main/java/com/bootdo/datasend/dianxin/service/impl/DeviceOrderInfoServiceImpl.java new file mode 100644 index 0000000..9185376 --- /dev/null +++ b/src/main/java/com/bootdo/datasend/dianxin/service/impl/DeviceOrderInfoServiceImpl.java @@ -0,0 +1,16 @@ +package com.bootdo.datasend.dianxin.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bootdo.datasend.dianxin.domain.DeviceOrderInfo; +import com.bootdo.datasend.dianxin.mapper.DeviceOrderInfoMapper; +import com.bootdo.datasend.dianxin.service.DeviceOrderInfoService; +import org.springframework.stereotype.Service; + +/** + * @Description DeviceOrderInfoServiceImpl + * @Author lijingtong + * @Date 2025-07-09 + */ +@Service +public class DeviceOrderInfoServiceImpl extends ServiceImpl implements DeviceOrderInfoService { +} diff --git a/src/main/java/com/bootdo/datasend/dianxin/task/StandardTask.java b/src/main/java/com/bootdo/datasend/dianxin/task/StandardTask.java index 321fd1d..58d4038 100644 --- a/src/main/java/com/bootdo/datasend/dianxin/task/StandardTask.java +++ b/src/main/java/com/bootdo/datasend/dianxin/task/StandardTask.java @@ -33,6 +33,7 @@ public class StandardTask { private final BaseVehicleRecordService vehicleRecordService; private final BaseDoorRecordService doorRecordService; private final DeviceInfoRecordService deviceRecordService; + private final DeviceOrderInfoService deviceOrderInfoService; private final RestTemplate restTemplate; @@ -533,5 +534,50 @@ public class StandardTask { /** * 推送设备订单信息 */ + @Scheduled(cron = "0/5 * * * * ? ") + public void DeviceOrderInfoRecord() { + List lists = deviceOrderInfoService.list(new QueryWrapper() + .eq("is_send", "0") + .last("limit 100") + ); + + for (DeviceOrderInfo h : lists) { + DeviceOrderInfoDTO dto = new DeviceOrderInfoDTO(); + DeviceOrderInfoDataDTO dataDTO = new DeviceOrderInfoDataDTO(); + dataDTO.setRequestFlag("single"); + DeviceOrderInfoDataListDTO dataListDTO = new DeviceOrderInfoDataListDTO(); + dataListDTO.setDeviceSN(h.getDeviceSN()); + dataListDTO.setSaleType(h.getSaleType()); + dataListDTO.setBuyTypeName(h.getBuyTypeName()); + dataListDTO.setMoney(h.getMoney()); + dataListDTO.setSaleDate(h.getSaleDate()); + dataListDTO.setOwnerName(h.getOwnerName()); + dataListDTO.setRoomNo(h.getRoomNo()); + List list = new ArrayList<>(); + list.add(dataListDTO); + dataDTO.setRequestDataList(list); + dto.setRequestData(dataDTO); + String requestBody = JSON.toJSONString(dto, SerializerFeature.BrowserCompatible); + + String url = ""; + + try { + // 发送 POST 请求,这里假设接口返回类型为 String ,可根据实际调整 +// 消息队列发送 +// rabbitTemplate.convertAndSend(queueName, JSON.toJSONString(dto)); +// 调接口 + String result = restTemplate.postForObject(url, requestBody, String.class); + logger.info("调用接口返回结果:{}", result); + + // 若返回码符合成功逻辑(需看接口文档定义),更新发送状态 + h.setIsSend(1); + deviceOrderInfoService.saveOrUpdate(h); + logger.info("电表设备订单信息发送成功:" + h.getId()); + } catch (Exception e) { + logger.error("调用接口发送数据失败,记录 ID:{},异常:{}", h.getId(), e.getMessage()); + } + + } + } }