| | |
| | | package com.gs.xiaomi; |
| | | |
| | | import cn.hutool.crypto.digest.DigestUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.fasterxml.jackson.core.JsonProcessingException; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.gs.xiaomi.dto.BCS101Request; |
| | | import com.gs.xiaomi.dto.BCS101Response; |
| | | import com.gs.xiaomi.dto.NumbericalDto; |
| | | import com.gs.xiaomi.dto.SnListItemDto; |
| | | import com.gs.xiaomi.entity.DeliveryMain; |
| | | import com.gs.xiaomi.entity.SnListItem; |
| | | import com.gs.xiaomi.service.BCS101ApiService; |
| | | import com.gs.xiaomi.service.BCS101Service; |
| | | import com.gs.xiaomi.service.DeliveryMainService; |
| | | import com.gs.xiaomi.service.SnListItemService; |
| | | import com.gs.xiaomi.service.Xm104Service; |
| | | import com.gs.xiaomi.util.SnListItemConverter; |
| | | import org.junit.jupiter.api.Test; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.test.context.SpringBootTest; |
| | | |
| | | import java.io.IOException; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @SpringBootTest |
| | | class XiaomiApplicationTests { |
| | |
| | | |
| | | @Autowired |
| | | private BCS101ApiService bcs101ApiService; |
| | | |
| | | @Autowired |
| | | private DeliveryMainService deliveryMainService; |
| | | |
| | | @Autowired |
| | | private SnListItemService snListItemService; |
| | | |
| | | @Autowired |
| | | private BCS101Service bcs101Service; |
| | | |
| | | @Test |
| | | void contextLoads() throws Exception { |
| | |
| | | |
| | | @Test |
| | | void testBCS101ApiService() throws Exception { |
| | | // 创建测试请求参数 |
| | | BCS101Request request = new BCS101Request(); |
| | | request.setSupplierId("177301"); |
| | | request.setDocNo("9311036039"); |
| | | request.setDocType("ASNGR"); |
| | | request.setPageNo(1); |
| | | request.setPageSize(1000); |
| | | |
| | | String bcs101Data = bcs101ApiService.getBCS101Data(request); |
| | | System.out.println(bcs101Data); |
| | | List<DeliveryMain> list = deliveryMainService.list(); |
| | | |
| | | //List<String> collect = list.stream().map(DeliveryMain::getZzasn).collect(Collectors.toList()); |
| | | |
| | | list.forEach(s -> { |
| | | System.out.println(String.valueOf(Integer.parseInt(s.getLifnr())) + ":" + s.getZzasn()); |
| | | // 创建测试请求参数 |
| | | BCS101Request request = new BCS101Request(); |
| | | request.setSupplierId(String.valueOf(Integer.parseInt(s.getHubLifnr()))); |
| | | request.setDocNo(s.getZzasn()); |
| | | request.setDocType("ASNGR"); |
| | | request.setPageNo(1); |
| | | request.setPageSize(1000); |
| | | |
| | | // 调用API获取原始JSON字符串 |
| | | String bcs101Data = null; |
| | | try { |
| | | bcs101Data = bcs101ApiService.getBCS101Data(request); |
| | | } catch (IOException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | System.out.println("原始响应: " + bcs101Data); |
| | | |
| | | // 解析JSON为BCS101Response对象 |
| | | ObjectMapper objectMapper = new ObjectMapper(); |
| | | try { |
| | | BCS101Response response = objectMapper.readValue(bcs101Data, BCS101Response.class); |
| | | |
| | | // 检查响应是否成功 |
| | | if (response.isSuccess()) { |
| | | // 获取snList数据 |
| | | List<SnListItemDto> snList = response.getBody().getSnList(); |
| | | |
| | | if (snList != null && !snList.isEmpty()) { |
| | | System.out.println("获取到 " + snList.size() + " 条SN数据,开始持久化..."); |
| | | |
| | | // 转换DTO为Entity,并设置关联信息 |
| | | List<SnListItem> entityList = SnListItemConverter.toEntityList( |
| | | snList, |
| | | s.getId(), // deliveryMainId - 送货单主表ID |
| | | s.getZzasn() // zzasn - 送货单号 |
| | | ); |
| | | |
| | | // 先删除该送货单已有的SN数据(避免重复) |
| | | snListItemService.lambdaUpdate() |
| | | .eq(SnListItem::getZzasn, s.getZzasn()) |
| | | .remove(); |
| | | |
| | | // 批量保存到数据库 |
| | | boolean saved = snListItemService.saveBatch(entityList); |
| | | |
| | | if (saved) { |
| | | System.out.println("成功保存 " + entityList.size() + " 条SN数据到数据库"); |
| | | } else { |
| | | System.err.println("保存SN数据失败!"); |
| | | } |
| | | } else { |
| | | System.out.println("响应中没有SN数据"); |
| | | } |
| | | } else { |
| | | System.err.println("BCS101接口调用失败: " + response.getErrorDesc()); |
| | | } |
| | | |
| | | } catch (JsonProcessingException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 测试BCS101数据同步 - 使用BCS101Service |
| | | * @param asn 送货单号 |
| | | * @throws Exception 异常 |
| | | */ |
| | | @Test |
| | | void testGetBCS101() throws Exception { |
| | | // 直接调用BCS101Service进行数据同步 |
| | | bcs101Service.syncBCS101DataByAsn("9316702418"); |
| | | } |
| | | } |