ShipmentClient.java 2.53 KB
package com.huaheng.api.erp.client;

import com.huaheng.api.erp.client.shipment.rfc.TBAT;
import com.huaheng.api.erp.client.shipment.rfc.TSER;
import com.huaheng.api.erp.domain.Shipment;
import com.huaheng.api.erp.domain.ShipmentItem;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.framework.config.JaxWsDynamicClientFactory;
import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
import org.apache.cxf.endpoint.Client;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import javax.xml.ws.Holder;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

@Service
public class ShipmentClient {

    private static final Logger log = LoggerFactory.getLogger(ShipmentClient.class);

    public void soReply(ShipmentDetail shipmentDetail) {
        JaxWsDynamicClientFactory jdcf = JaxWsDynamicClientFactory.newInstance();
        Client client = jdcf.createClient("http://192.168.11.24:9090/ZmmWsWms001?wsdl");
        Holder<String> message = new Holder<>();
        Holder<String> code = new Holder<>();
        Holder<String> credential = new Holder<>();
        TBAT shipment = new TBAT();
        TSER shipmentItem =new TSER();
        shipment.setSAPNO(shipmentDetail.getReferCode());
        shipment.setSAPLINE(shipmentDetail.getReferLineNum());
        shipment.setMATNR(shipmentDetail.getMaterialCode());
        shipment.setCHARG(shipmentDetail.getBatch());
        shipment.setLGORT(shipmentDetail.getLGORT());
        shipment.setMENGE(Integer.valueOf(shipmentDetail.getShipQty().toString()));
        shipmentItem.setSAPNO(shipmentDetail.getReferCode());
        shipmentItem.setSAPLINE(shipmentDetail.getReferLineNum());
        shipmentItem.setCHARG(shipmentDetail.getBatch());
        shipmentItem.setSERNR(shipmentDetail.getUserDef1());
        List<TBAT> shipments = new ArrayList<>();
        List<TSER> shipmentItems = new ArrayList<>();
        shipments.add(shipment);
        shipmentItems.add(shipmentItem);
        Holder<List<TBAT>> listHolder = new Holder<List<TBAT>>(shipments);
        Holder<List<TSER>> itemListHolder = new Holder<List<TSER>>(shipmentItems);

        try {
            client.invoke("ZMMFM_WMS_001", listHolder,itemListHolder,
                    credential, message, code);
        }catch (Exception e){
            throw new ServiceException("出库回传,回调erp接口错误");
        }
        log.info("回传成功,物料凭证为{},回传信息:{},信息类型:{}",credential,message,code);
    }
}