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 Xm104Service xm104Service; @Autowired private BCS101ApiService bcs101ApiService; @Autowired private DeliveryMainService deliveryMainService; @Autowired private SnListItemService snListItemService; @Autowired private BCS101Service bcs101Service; @Test void contextLoads() throws Exception { xm104Service.getDb(); } //manualSynchronization @Test void contextLoads1() throws Exception { NumbericalDto barcode = new NumbericalDto(); barcode.setAsn("9316702418"); xm104Service.manualSynchronization(barcode); } @Test void test() { // String str = ",,"; // String[] parts = str.split(","); // for (String part : parts) { // System.out.println(part); // } System.out.println(DigestUtil.md5Hex("VDATA.XM104/177301/c5Kl}xN&i(").toUpperCase()); } @Test void testBCS101ApiService() throws Exception { List list = deliveryMainService.list(); //List collect = list.stream().map(DeliveryMain::getZzasn).collect(Collectors.toList()); list.forEach(s -> { System.out.println(String.valueOf(Integer.parseInt(s.getHubLifnr())) + ":" + 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 snList = response.getBody().getSnList(); if (snList != null && !snList.isEmpty()) { System.out.println("获取到 " + snList.size() + " 条SN数据,开始持久化..."); // 转换DTO为Entity,并设置关联信息 List 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"); } }