啊鑫
2025-04-09 5e84b114cba06681f96ca9e4ffe565ef7811898b
接口解析的实体类确认
已修改5个文件
557 ■■■■■ 文件已修改
src/main/java/com/gs/xiaomi/dto/BoxItem.java 123 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/gs/xiaomi/dto/BoxSum.java 144 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/gs/xiaomi/dto/EtHeader.java 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/gs/xiaomi/dto/Item.java 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/gs/xiaomi/service/SoapApiService.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/gs/xiaomi/dto/BoxItem.java
@@ -11,96 +11,95 @@
@Data
public class BoxItem {
    /* 物流包装信息 */
    @XmlElement(name = "BOX_SEQ")
    private String boxSeq;  // 箱单序号
    @XmlElement(name = "box_seq")
    private String boxSeq;  // 箱单流水号
    @XmlElement(name = "BOX_NO")
    private String boxNo;  // 箱号
    @XmlElement(name = "box_no")
    private String boxNo;  // 包装箱唯一标识
    @XmlElement(name = "CARTONID")
    private String cartonid;  // 小米箱号
    @XmlElement(name = "cartonid")
    private String cartonid;  // 小米专用箱号(加密格式)
    /* 采购与单据信息 */
    @XmlElement(name = "ZZASN")
    private String zzasn;  // 送货单号
    /* 采购与单据信息(6个核心字段) */
    @XmlElement(name = "zzasn")
    private String zzasn;  // 全球统一送货单号
    @XmlElement(name = "matnr")
    private String matnr;  // 国际物料编码
    @XmlElement(name = "MATNR")
    private String matnr;  // 物料编号
    @XmlElement(name = "maktx")
    private String maktx;  // 多语言物料描述
    @XmlElement(name = "MAKTX")
    private String maktx;  // 物料描述
    /* 规格与数量体系(18个计量字段) */
    @XmlElement(name = "pc_qty")
    private String pcQty;  // 实际发货件数
    /* 规格与数量 */
    @XmlElement(name = "PC_QTY")
    private String pcQty;  // 发货数量
    @XmlElement(name = "lot_no")
    private String lotNo;  // 托盘唯一编号
    @XmlElement(name = "LOT_NO")
    private String lotNo;  // 托盘号
    @XmlElement(name = "ntgew_p")
    private String ntgewP;  // 单件净重(克/件)
    @XmlElement(name = "NTGEW_P")
    private String ntgewP;  // 单件净重(G/PCS)
    @XmlElement(name = "brgew_p")
    private String brgewP;  // 单箱毛重(千克/箱)
    @XmlElement(name = "BRGEW_P")
    private String brgewP;  // 单箱毛重(KG/箱)
    @XmlElement(name = "lot_size")
    private String lotSize;  // 托盘装载规格
    @XmlElement(name = "LOT_SIZE")
    private String lotSize;  // 托盘尺寸(m)
    @XmlElement(name = "box_size")
    private String boxSize;  // 标准化箱体尺寸
    @XmlElement(name = "BOX_SIZE")
    private String boxSize;  // 单箱尺寸(cm)
    @XmlElement(name = "total_vlume")
    private String totalVlume;  // 含托盘总体积
    @XmlElement(name = "TOTAL_VLUME")
    private String totalVlume;  // 含托体积(m³)
    @XmlElement(name = "box_qty")
    private String boxQty;  // 总箱数
    @XmlElement(name = "BOX_QTY")
    private String boxQty;  // 箱数
    @XmlElement(name = "ebeln")
    private String ebeln;  // 采购订单号
    @XmlElement(name = "EBELN")
    private String ebeln;  // 采购凭证号
    @XmlElement(name = "ebelp")
    private String ebelp;  // 采购订单行号
    @XmlElement(name = "EBELP")
    private String ebelp;  // 采购凭证项目编号
    @XmlElement(name = "box_spec")
    private String boxSpec;  // 单箱容量(件/箱)
    @XmlElement(name = "BOX_SPEC")
    private String boxSpec;  // 单箱包规(pcs/箱)
    @XmlElement(name = "ntgew")
    private String ntgew;  // 总净重(自动计算值)
    @XmlElement(name = "NTGEW")
    private String ntgew;  // 总净重=PC_QTY*NTGEW_P
    @XmlElement(name = "brgew")
    private String brgew;  // 总毛重(含包装)
    @XmlElement(name = "BRGEW")
    private String brgew;  // 总毛重
    @XmlElement(name = "meins")
    private String meins;  // 国际计量单位
    @XmlElement(name = "MEINS")
    private String meins;  // 计量单位
    @XmlElement(name = "l_m")
    private String lM;  // 托盘长度(米)
    @XmlElement(name = "BRAND")
    private String brand;  // 品牌
    @XmlElement(name = "w_m")
    private String wM;  // 托盘宽度(米)
    @XmlElement(name = "PLACE")
    private String place;  // 产地
    @XmlElement(name = "h_m")
    private String hM;  // 托盘堆高(米)
    @XmlElement(name = "IMCLR")
    private String imclr;  // 进口报关标识
    /* 商品与监管信息(7个关键字段) */
    @XmlElement(name = "brand")
    private String brand;  // 品牌认证标识
    @XmlElement(name = "MODELNUMBER")
    private String modelnumber;  // 型号
    @XmlElement(name = "place")
    private String place;  // 原产地编码
    @XmlElement(name = "MATNR_JG")
    private String matnrJg;  // 监管条件
    @XmlElement(name = "imclr")
    private String imclr;  // 海关报关标识
    @XmlElement(name = "MATNR_JYJY")
    private String matnrJyjy;  // 检验检疫
    @XmlElement(name = "modelnumber")
    private String modelnumber;  // 国际型号编码
    @XmlElement(name = "L_M")
    private String lM;  // 托盘长(m)
    @XmlElement(name = "matnr_jg")
    private String matnrJg;  // 海关监管条件
    @XmlElement(name = "W_M")
    private String wM;  // 托盘宽(m)
    @XmlElement(name = "H_M")
    private String hM;  // 托盘高(m)
    @XmlElement(name = "matnr_jyjy")
    private String matnrJyjy;  // 检验检疫代码
}
src/main/java/com/gs/xiaomi/dto/BoxSum.java
@@ -11,89 +11,97 @@
@Data
public class BoxSum {
    @XmlElement(name = "BOX_SEQ")
    private String boxSeq;  // 箱单序列号
    /* 物流包装核心标识(3项) */
    @XmlElement(name = "box_seq")
    private String boxSeq;  // 箱单流水号
    @XmlElement(name = "BOX_NO")
    private String boxNo;  // 物理箱号
    @XmlElement(name = "box_no")
    private String boxNo;  // 物理包装标识
    @XmlElement(name = "ZZASN")
    private String zzasn;  // 送货单号
    @XmlElement(name = "cartonid")
    private String cartonid;  // 小米箱号(保留原字段)
    @XmlElement(name = "MATNR")
    private String matnr;  // SAP物料编号
    /* 单据与物料体系(5项) */
    @XmlElement(name = "zzasn")
    private String zzasn;  // 全球统一送货单号
    @XmlElement(name = "MAKTX")
    private String maktx;  // 物料中文描述
    @XmlElement(name = "matnr")
    private String matnr;  // SAP标准物料编码
    @XmlElement(name = "PC_QTY")
    private String pcQty;  // 实际发货数量
    @XmlElement(name = "maktx")
    private String maktx;  // 多语言物料描述
    @XmlElement(name = "LOT_NO")
    private String lotNo;  // 托盘编号
    /* 计量参数体系(12项) */
    @XmlElement(name = "pc_qty")
    private String pcQty;  // 实际发货件数
    @XmlElement(name = "NTGEW_P")
    private String ntgewP;  // 单件净重(公式:物料净重G/PCS)
    @XmlElement(name = "lot_no")
    private String lotNo;  // 物流托盘编号
    @XmlElement(name = "BRGEW_P")
    private String brgewP;  // 单箱毛重(KG/箱)
    @XmlElement(name = "ntgew_p")
    private String ntgewP;  // 单件净重(克/件)
    @XmlElement(name = "LOT_SIZE")
    private String lotSize;  // 托盘尺寸(米制)
    @XmlElement(name = "brgew_p")
    private String brgewP;  // 单箱毛重(千克/箱)
    @XmlElement(name = "BOX_SIZE")
    private String boxSize;  // 单箱尺寸(厘米)
    /* 规格维度(6项) */
    @XmlElement(name = "lot_size")
    private String lotSize;  // 托盘装载规格
    @XmlElement(name = "TOTAL_VLUME")
    @XmlElement(name = "box_size")
    private String boxSize;  // 标准箱体尺寸
    @XmlElement(name = "total_vlume")  // 注意字段拼写建议修正为volume
    private String totalVlume;  // 含托盘总体积
    @XmlElement(name = "BOX_QTY")
    private String boxQty;  // 总箱数
    /* 采购凭证信息块 */
    @XmlElement(name = "EBELN")
    private String ebeln;  // 采购凭证号
    @XmlElement(name = "EBELP")
    private String ebelp;  // 采购凭证项目编号
    @XmlElement(name = "BOX_SPEC")
    private String boxSpec;  // 单箱容量规格
    @XmlElement(name = "NTGEW")
    private String ntgew;  // 总净重(公式:PC_QTY*NTGEW_P)
    @XmlElement(name = "BRGEW")
    private String brgew;  // 总毛重(自动计算值)
    /* 基础计量信息块 */
    @XmlElement(name = "MEINS")
    private String meins;  // 基本计量单位
    @XmlElement(name = "BRAND")
    private String brand;  // 制造商品牌
    @XmlElement(name = "PLACE")
    private String place;  // 原产地信息
    @XmlElement(name = "IMCLR")
    private String imclr;  // 小米进口报关标识
    @XmlElement(name = "MODELNUMBER")
    private String modelnumber;  // 产品型号
    @XmlElement(name = "MATNR_JG")
    private String matnrJg;  // 海关监管条件
    @XmlElement(name = "MATNR_JYJY")
    private String matnrJyjy;  // 检验检疫要求
    @XmlElement(name = "L_M")
    @XmlElement(name = "l_m")
    private String lM;  // 托盘长度(米)
    @XmlElement(name = "W_M")
    @XmlElement(name = "w_m")
    private String wM;  // 托盘宽度(米)
    @XmlElement(name = "H_M")
    private String hM;  // 托盘高度(米)
    @XmlElement(name = "h_m")
    private String hM;  // 托盘堆高(米)
    /* 采购凭证信息(4项) */
    @XmlElement(name = "ebeln")
    private String ebeln;  // 采购订单号
    @XmlElement(name = "ebelp")
    private String ebelp;  // 采购订单行号
    @XmlElement(name = "box_spec")
    private String boxSpec;  // 单箱容量规格
    @XmlElement(name = "box_qty")
    private String boxQty;  // 总包装箱数
    /* 重量计算体系(3项) */
    @XmlElement(name = "ntgew")
    private String ntgew;  // 自动计算总净重
    @XmlElement(name = "brgew")
    private String brgew;  // 系统核算总毛重
    @XmlElement(name = "meins")
    private String meins;  // 国际计量单位
    /* 贸易合规信息(7项) */
    @XmlElement(name = "brand")
    private String brand;  // 品牌认证标识
    @XmlElement(name = "place")
    private String place;  // 原产地编码
    @XmlElement(name = "imclr")
    private String imclr;  // 报关标识
    @XmlElement(name = "modelnumber")
    private String modelnumber;  // 国际型号编码
    @XmlElement(name = "matnr_jg")
    private String matnrJg;  // 海关监管条件
    @XmlElement(name = "matnr_jyjy")
    private String matnrJyjy;  // 检验检疫代码
}
src/main/java/com/gs/xiaomi/dto/EtHeader.java
@@ -11,36 +11,201 @@
@XmlAccessorType(XmlAccessType.FIELD)
@Data
public class EtHeader {
    /* 核心单据信息块 */
    @XmlElement(name = "zzasn")
    private String zzasn;
    private String zzasn; // 送货单号(主键)
    @XmlElement(name = "zzasn_type")
    private String zzasnType;
    private String zzasnType; // 单据类型(普通/紧急)
    @XmlElement(name = "migo_type")
    private String migoType; // 收货类型(标准/退货)
    /* 采购与库存管理块 */
    @XmlElement(name = "zrproject")
    private String zrproject; // 项目调拨编号
    @XmlElement(name = "ekorg")
    private String ekorg; // 采购组织编码
    @XmlElement(name = "ekotx")
    private String ekotx; // 采购组织描述
    @XmlElement(name = "stock_org_from")
    private String stockOrgFrom; // 调出库存组织编码
    @XmlElement(name = "stock_org_from_desc")
    private String stockOrgFromDesc; // 调出库存描述
    @XmlElement(name = "stock_org_to")
    private String stockOrgTo; // 调入库存组织编码
    @XmlElement(name = "stock_org_to_desc")
    private String stockOrgToDesc; // 调入库存描述
    /* 供应商与合作伙伴块 */
    @XmlElement(name = "lifnr")
    private String lifnr;
    private String lifnr; // 供应商编码(示例值:130479)
    @XmlElement(name = "vendor_name")
    private String vendorName;
    private String vendorName; // 供应商全称
    @XmlElement(name = "zzship_addr")
    private String zzshipAddr;
    @XmlElement(name = "short_name")
    private String shortName; // 供应商简称
    @XmlElement(name = "hub_lifnr")
    private String hubLifnr; // HUB供应商编码
    /* 物流运输信息块 */
    @XmlElement(name = "zzcarrier")
    private String zzcarrier; // 承运商名称
    @XmlElement(name = "zzcarrier_no")
    private String zzcarrierNo; // 承运单号
    @XmlElement(name = "road_transport_no")
    private String roadTransportNo; // 运输单据号
    @XmlElement(name = "zztrans_model")
    private String zztransModel; // 运输车型
    @XmlElement(name = "zzlicense_numb")
    private String zzlicenseNumb; // 车牌号
    @XmlElement(name = "zzseal_no")
    private String zzsealNo; // 铅封号
    @XmlElement(name = "logistics_no")
    private String logisticsNo; // 物流单号
    @XmlElement(name = "logistics_company")
    private String logisticsCompany; // 物流公司编码
    @XmlElement(name = "logistics_company_name")
    private String logisticsCompanyName; // 物流公司全称
    /* 联系人信息块 */
    @XmlElement(name = "zzship_name")
    private String zzshipName;
    private String zzshipName; // 发货人姓名
    @XmlElement(name = "zzship_phon")
    private String zzshipPhon; // 发货人电话
    @XmlElement(name = "zzdriver_name")
    private String zzdriverName; // 司机姓名
    @XmlElement(name = "zzdriver_phon")
    private String zzdriverPhon; // 司机电话
    @XmlElement(name = "last4_phone_number")
    private String last4PhoneNumber; // 手机尾号
    @XmlElement(name = "receiver")
    private String receiver; // 收货人
    @XmlElement(name = "receive_phone")
    private String receivePhone; // 收货电话
    @XmlElement(name = "final_contact")
    private String finalContact; // 最终收货人
    @XmlElement(name = "final_phone")
    private String finalPhone; // 最终联系电话
    /* 地址信息块 */
    @XmlElement(name = "zzship_addr")
    private String zzshipAddr; // 发货地址
    @XmlElement(name = "zzreceive_addr")
    private String zzreceiveAddr; // 标准收货地址
    @XmlElement(name = "receive_addr")
    private String receiveAddr; // 实际收货地址
    @XmlElement(name = "final_addr")
    private String finalAddr; // 最终配送地址
    @XmlElement(name = "final_company")
    private String finalCompany; // 最终收货单位
    /* 时间控制块 */
    @XmlElement(name = "zzship_date")
    private String zzshipDate;
    private String zzshipDate; // 发货日期(yyyyMMdd)
    @XmlElement(name = "zzarrive_time")
    private String zzarriveTime; // 预计到货日期
    @XmlElement(name = "zzarrive_time1")
    private String zzarriveTime1; // 预计到货时间(HHmm)
    @XmlElement(name = "reserve_date")
    private String reserveDate; // 预约日期
    @XmlElement(name = "reserve_time")
    private String reserveTime; // 预约时间段
    /* 仓库管理块 */
    @XmlElement(name = "zzwarehouse_id")
    private String zzwarehouseId; // 仓库唯一标识
    @XmlElement(name = "receive_warehouse_id")
    private String receiveWarehouseId; // 收货仓库ID
    @XmlElement(name = "receive_warehouse_short")
    private String receiveWarehouseShort; // 仓库简称
    @XmlElement(name = "bukrs")
    private String bukrs; // 公司代码
    /* 状态控制块 */
    @XmlElement(name = "status")
    private String status; // 单据状态(新建/已发货/已完成)
    @XmlElement(name = "status_sn")
    private String statusSn; // 条码状态(已上传/未上传)
    @XmlElement(name = "zzcanceled")
    private String zzcanceled; // 作废标识
    @XmlElement(name = "price_stat")
    private String priceStat; // 价格审核状态
    /* 业务模式块 */
    @XmlElement(name = "purchase_mode")
    private String purchaseMode; // 仓库作业指导类型
    @XmlElement(name = "purchase_mode2")
    private String purchaseMode2; // 采购模式(VMI/JIT)
    @XmlElement(name = "business_model")
    private String businessModel; // 交料模式(自提/配送)
    /* 扩展信息块 */
    @XmlElement(name = "asn_desc")
    private String asnDesc; // 单据描述
    @XmlElement(name = "imclr")
    private String imclr; // 进口报关标识
    @XmlElement(name = "lifnr_dg")
    private String lifnrDg; // 外部工厂代码
    @XmlElement(name = "product_type")
    private String productType; // 生产类型(自制/外购)
    @XmlElement(name = "zzdriver_license")
    private String zzdriverLicense; // 驾驶证号
    /* 附件信息块 */
    @XmlElementWrapper(name = "items")
    @XmlElement(name = "item")
    private List<Item> items;
    private List<Item> items;// 行项目明细
    @XmlElementWrapper(name = "BOX_ITEMS")
    @XmlElementWrapper(name = "box_items")
    @XmlElement(name = "boxItems")
    private List<BoxItem> boxItems;
    private List<BoxItem> boxItems; // 箱单明细
    @XmlElementWrapper(name = "BOX_SUMS")
    @XmlElementWrapper(name = "box_sums")
    @XmlElement(name = "boxSum")
    private List<BoxSum> boxSums;
    private List<BoxSum> boxSums; // 箱数汇总
}
src/main/java/com/gs/xiaomi/dto/Item.java
@@ -11,115 +11,114 @@
@Data
public class Item {
    // 基础单据信息
    /* 基础单据标识 */
    @XmlElement(name = "ZZASN")
    @XmlElement(name = "zzasn")
    private String zzasn;  // 送货单号
    @XmlElement(name = "ZZITEM_ID")
    @XmlElement(name = "zzitem_id")
    private String zzitemId;  // 送货单行号
    @XmlElement(name = "ZZPO_NO")
    @XmlElement(name = "zzpo_no")
    private String zzpoNo;  // 采购凭证号
    @XmlElement(name = "ZZPO_ITEM_ID")
    @XmlElement(name = "zzpo_item_id")
    private String zzpoItemId;  // PO行项目
    /* 退换货关联信息 */
    @XmlElement(name = "ZZREQNR")
    @XmlElement(name = "zzreqnr")
    private String zzreqnr;  // 小米退换货单号
    @XmlElement(name = "ZZREQLN")
    @XmlElement(name = "zzreqln")
    private String zzreqln;  // 申请单行项目
    /* 物料信息体系 */
    @XmlElement(name = "ZZPRODUCT_ID")
    @XmlElement(name = "zzproduct_id")
    private String zzproductId;  // 小米物料号
    @XmlElement(name = "ZZVPRODUCT_ID")
    @XmlElement(name = "zzvproduct_id")
    private String zzvproductId;  // 工厂料号
    @XmlElement(name = "ZZSKU")
    @XmlElement(name = "zzsku")
    private String zzsku;  // SKU
    @XmlElement(name = "MAKTX")
    @XmlElement(name = "maktx")
    private String maktx;  // 物料描述
    @XmlElement(name = "MODELNUMBER")
    @XmlElement(name = "modelnumber")
    private String modelnumber;  // 型号
    /* 计量与库存数据 */
    @XmlElement(name = "ZZQUANTITY")
    @XmlElement(name = "zzquantity")
    private String zzquantity;  // 订单数量
    @XmlElement(name = "ZZUNIT")
    @XmlElement(name = "zzunit")
    private String zzunit;  // 计量单位
    @XmlElement(name = "ZZOPEN_QTY")
    @XmlElement(name = "zzopen_qty")
    private String zzopenQty;  // 开放数量
    @XmlElement(name = "ACT_GR_QTY")
    @XmlElement(name = "act_gr_qty")
    private String actGrQty;  // 实收数量
    @XmlElement(name = "SHIPMENTID_NUM")
    @XmlElement(name = "shipmentid_num")
    private String shipmentidNum;  // Shipment数量
    /* 品牌与产地信息 */
    @XmlElement(name = "BRAND")
    @XmlElement(name = "brand")
    private String brand;  // 品牌
    @XmlElement(name = "PLACE")
    @XmlElement(name = "place")
    private String place;  // 产地
    @XmlElement(name = "BRAND_TYPE")
    @XmlElement(name = "brand_type")
    private String brandType;  // 品牌类型
    /* 物流追踪信息 */
    @XmlElement(name = "ZSHIPMENT_ID")
    @XmlElement(name = "zshipment_id")
    private String zshipmentId;  // Shipment ID
    @XmlElement(name = "ADDRESS_DETAIL")
    @XmlElement(name = "address_detail")
    private String addressDetail;  // 地址详情
    /* 调拨管理字段 */
    @XmlElement(name = "BEDNR")
    @XmlElement(name = "bednr")
    private String bednr;  // 调出项目号
    @XmlElement(name = "WARE_TYPE_FROM")
    @XmlElement(name = "ware_type_from")
    private String wareTypeFrom;  // 调出仓类型
    @XmlElement(name = "WARE_TYPE_TO")
    @XmlElement(name = "ware_type_to")
    private String wareTypeTo;  // 调入仓类型
    @XmlElement(name = "XMSTO_NO")
    @XmlElement(name = "xmsto_no")
    private String xmstoNo;  // 物控调拨单号
    @XmlElement(name = "XMSTO_ITEM_NO")
    @XmlElement(name = "xmsto_item_no")
    private String xmstoItemNo;  // 调拨单行项
    /* 系统控制字段 */
    @XmlElement(name = "CHANGED_AT")
    @XmlElement(name = "changed_at")
    private String changedAt;  // 修改时间
    @XmlElement(name = "CREATED_AT")
    @XmlElement(name = "created_at")
    private String createdAt;  // 创建时间
    /* 扩展业务字段 */
    @XmlElement(name = "APP_MODELS")
    @XmlElement(name = "app_models")
    private String appModels;  // 项目机型
    @XmlElement(name = "EXT_DOC_NO")
    @XmlElement(name = "ext_doc_no")
    private String extDocNo;  // 外部凭证号
    @XmlElement(name = "EXT_DOC_ITEM")
    @XmlElement(name = "ext_doc_item")
    private String extDocItem;  // 外部凭证行项
    @XmlElement(name = "BATCH_ID")
    @XmlElement(name = "batch_id")
    private String batchId;  // HS编码
    @XmlElement(name = "BATCH_ROW")
    @XmlElement(name = "batch_row")
    private String batchRow;  // 优先采购项
    @XmlElement(name = "IS_IDENTIFICATION")
    @XmlElement(name = "is_identification")
    private String isIdentification;  // 串号管理标识
}
src/main/java/com/gs/xiaomi/service/SoapApiService.java
@@ -23,10 +23,15 @@
        if (response.isSuccessful() && response.body() != null) {
            String bodyStr = response.body().string();
            String innerXml = extractCdata(bodyStr);
            if (innerXml == null) throw new RuntimeException("No CDATA <document> found in response");
            String evCode = extractEvCode(bodyStr);
            if (!"Y".equalsIgnoreCase(evCode)) {
                throw new RuntimeException("SOAP business failed, EV_CODE: " + evCode);
            }
            String decodedXml = decodeXmlEntities(innerXml);
            String decodedXml = decodeXmlEntities(bodyStr);
            String innerXml = extractCdata(decodedXml);
            if (innerXml == null) throw new RuntimeException("No CDATA <document> found in response");
            JAXBContext context = JAXBContext.newInstance(BizDocumentResult.class);
            Unmarshaller unmarshaller = context.createUnmarshaller();
@@ -45,7 +50,7 @@
                .method("POST", body)
//                .addHeader("User-Agent", "Apifox/1.0.0 (https://apifox.com)")
                .addHeader("Content-Type", "application/xml")
                .addHeader("Authorization", "Basic UkZDWkpYSUFPQlU6cHBCOVIhSGU=")
                .addHeader("Authorization", "Basic ")
                .addHeader("Accept", "*/*")
                .addHeader("Host", "mipoq.p.mi.com")
                .addHeader("Connection", "keep-alive")
@@ -55,11 +60,11 @@
        return client.newCall(request).execute();
    }
    private String extractCdata(String xml) {
        int cdataStart = xml.indexOf("<![CDATA[");
        int cdataEnd = xml.indexOf("]]>", cdataStart);
        if (cdataStart == -1 || cdataEnd == -1) return null;
        return xml.substring(cdataStart + 9, cdataEnd).trim();
    private String extractEvCode(String xml) {
        int start = xml.indexOf("<EV_CODE>");
        int end = xml.indexOf("</EV_CODE>", start);
        if (start == -1 || end == -1) return null;
        return xml.substring(start + 9, end).trim();
    }
    private String decodeXmlEntities(String xml) {
@@ -69,4 +74,11 @@
                .replace("&gt;", ">")
                .replace("&amp;", "&");
    }
    private String extractCdata(String xml) {
        int cdataStart = xml.indexOf("<EV_RESULT>");
        int cdataEnd = xml.indexOf("</EV_RESULT>", cdataStart);
        if (cdataStart == -1 || cdataEnd == -1) return null;
        return xml.substring(cdataStart + 11, cdataEnd).trim();
    }
}