Interface tool HttpRequestUtilObjectToMapUtil

HttpRequestUtil
import cn.hutool.http.HttpRequest;
import net.sf.json.JSONObject;

import java.util.HashMap;
import java.util.Map;


public final class HttpRequestUtil {

    public final static String get(String url,Map<String,String> header,Map<String,Object> param){
        return request(RequestTypeEnum.GET,url,header,param);
    }

    public final static String post(String url,Map<String,String> header,Map<String,Object> param){
        return request(RequestTypeEnum.POST,url,header,param);
    }

    public final static String request(RequestTypeEnum typeEnum, String url, Map<String,String> header,Map<String,Object> param){
        String result = "";
        HttpRequest request = null;
        if(RequestTypeEnum.GET.equals(typeEnum)){
            request = HttpRequest.get(url);
        }else {
            request = HttpRequest.post(url);
        }
        if(header!=null){
            for(String key : header.keySet()){
                request.header(key,header.get(key));
            }
        }
        result = request.body(JSONObject.fromObject(param).toString())
                .execute().body();
        return result;
    }
}
ObjectToMapUtil
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;


public final class ObjectToMapUtil {

    public final static Map<String, Object> objectToMapFirstUp(Object object){
        Map<String,Object> dataMap = new HashMap<>();
        Class<?> clazz = object.getClass();
        for (Field field : clazz.getDeclaredFields()) {
            try {
                field.setAccessible(true);
                String key = field.getName().substring(0, 1).toUpperCase() + field.getName().substring(1);
                dataMap.put(key,field.get(object));
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        return dataMap;
    }

    public final static Map<String, Object> objectToMap(Object object){
        Map<String,Object> dataMap = new HashMap<>();
        Class<?> clazz = object.getClass();
        for (Field field : clazz.getDeclaredFields()) {
            try {
                field.setAccessible(true);
                String key = field.getName();
                dataMap.put(key,field.get(object));
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        return dataMap;
    }
}
RequestTypeEnum
public enum RequestTypeEnum {
    POST("POST"),GET("GET");
    RequestTypeEnum(String name){
        this.name = name;
    }
    private String name;

    public String getName() {
        return name;
    }
}

Interface sample code

import com.jeeplus.common.json.AjaxJson;
import com.jeeplus.common.utils.DateUtils;
import com.jeeplus.modules.http.HttpRequestUtil;
import com.jeeplus.modules.http.ObjectToMapUtil;
import com.jeeplus.modules.http.wms.entity.*;
import com.jeeplus.modules.mes.business.baogong.erporder.entity.BusinessProductionOrderErp;
import com.jeeplus.modules.mes.business.baogong.erporder.service.BusinessProductionOrderErpService;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.Map;

/**
 * WMS completion and warehousing notice Product warehousing notice
 * @date 2023/7/16
 */
@Service
public class WMSCompleteInStoreApi {

   @Autowired
    private WSMConfig wsmConfig;
   @Autowired
    private BusinessProductionOrderErpService businessProductionOrderErpService;

    public AjaxJson doCompleteInStore(String orgcode, String mescode, String ordercode, String cinvcode, int num, String unitcode, Date date,String devNo){
        AjaxJson json = new AjaxJson();
        try {
            //Check customers and departments
            BusinessProductionOrderErp ordererp = businessProductionOrderErpService.getAgDeByCo(orgcode, ordercode);
            //transmission
            WmsCompleteInStoreNoticeRequest WmsCompleteInStoreNoticeRequest= new WmsCompleteInStoreNoticeRequest();
            WmsCompleteInStoreNoticeRequest.setRequestType("LIP_3_0301")
                    .setUserId(wsmConfig.getUserid()).setToken(wsmConfig.getToken());
            WmsCompleteInStoreNoticeBean WmsCompleteInStoreNoticeBean = new WmsCompleteInStoreNoticeBean();
            WmsCompleteInstoreNoticeHead head = new WmsCompleteInstoreNoticeHead();
            head.setSrcBillNo(mescode) //Source bill number (unique) (encoding)
                    .setSrcBillType("MO04") //Source bill type
                    .setfstBillNo(ordercode)
                    .setAgentCode(ordererp.getCustomercode()) //Customer code
                    .setAgentName(ordererp.getCustomername())
                    .setDepartCode(ordererp.getDeptcode()) //Department code
                    .setDepartName(ordererp.getDeptname())
                    .setSrcSystem("MES"); //Source system fill in MES
            WmsCompleteInStoreNoticeBean.setHead(head);
            WmsCompleteInstoreNoticeDetail detail = new WmsCompleteInstoreNoticeDetail();
            detail.setOrgCode(orgcode) //Organization code
                    .setSkuCode(cinvcode) //Item code
                    .setEstMainQty(num) //Quantity
                    .setMainUnit(ordererp.getUnitcode()) //Unit code
                    .setLotAtt01(DateUtils.formatDate(date, "yyyy-MM-dd")) //Production date 2023-08-25
                    .setSrcRowId(mescode); //Required (standard interface), just fill it in as you like
                    // .setFstRowNo(ordercode); //Production order number
            WmsCompleteInstoreNoticePkg pkg = new WmsCompleteInstoreNoticePkg();
            pkg.setSrcRowId(mescode)
                    .setDevNo(devNo) //Pallet material number
                    .setLpn(mescode); //Pallet code
            WmsCompleteInStoreNoticeBean.getDetail().add(detail);
            WmsCompleteInStoreNoticeBean.getPkg().add(pkg);
            WmsCompleteInStoreNoticeRequest.setData(WmsCompleteInStoreNoticeBean);
            System.out.println(JSONObject.fromObject(WmsCompleteInStoreNoticeRequest).toString());//
            Map<String,Object> map = ObjectToMapUtil.objectToMap(WmsCompleteInStoreNoticeRequest);
            String result = HttpRequestUtil.post(wsmConfig.getUrl(),null,map);
            JSONObject rsJson = JSONObject.fromObject(result);
            System.out.println(rsJson.toString());//
            String code = rsJson.getString("code");
            String message = rsJson.getString("message");
            if(!"200".equals(code)){
                json.setSuccess(false);
                json.setMsg(message);
                return json;
            }
            JSONObject dataJson = rsJson.getJSONObject("data");
            dataJson = dataJson.getJSONObject("head");
            json.put("wmscode",dataJson.getString("code"));
            json.setSuccess(true);
            json.setMsg(message);
        }catch (Exception e){
            e.printStackTrace();
            json.setMsg("WMS completion storage notification interface call failed");
            json.setSuccess(false);
        }
        return json;
    }

    public static void main(String[] args) {
        String result = "{"code":"200","message":"Operation successful","data":{"head":{"srcBillNo": "WGRK003","srcBillType":"MO04","code":"23072711171104389"}}}";
        JSONObject rsJson = JSONObject.fromObject(result);
        String code = rsJson.getString("code");
        String message = rsJson.getString("message");
        JSONObject dataJson = rsJson.getJSONObject("data");
        dataJson = dataJson.getJSONObject("head");
        System.out.println(dataJson.getString("code"));
    }
}

Entity class

WmsCompleteInStoreNoticeBean
import com.google.common.collect.Lists;

import java.io.Serializable;
import java.util.List;

/**
 * Notice of completion and storage
 * @date 2023/7/24
 */
public class WmsCompleteInStoreNoticeBean implements Serializable {

    private WmsCompleteInstoreNoticeHead head;

    private List<WmsCompleteInstoreNoticeDetail> detail = Lists.newArrayList();

    private List<WmsCompleteInstoreNoticePkg> pkg = Lists.newArrayList();

    public WmsCompleteInstoreNoticeHead getHead() {
        return head;
    }

    public WmsCompleteInStoreNoticeBean setHead(WmsCompleteInstoreNoticeHead head) {
        this.head = head;
        return this;
    }

    public List<WmsCompleteInstoreNoticeDetail> getDetail() {
        return detail;
    }

    public WmsCompleteInStoreNoticeBean setDetail(List<WmsCompleteInstoreNoticeDetail> detail) {
        this.detail = detail;
        return this;
    }

    public List<WmsCompleteInstoreNoticePkg> getPkg() {
        return pkg;
    }

    public WmsCompleteInStoreNoticeBean setPkg(List<WmsCompleteInstoreNoticePkg> pkg) {
        this.pkg = pkg;
        return this;
    }
}

WmsCompleteInstoreNoticeDetail

import java.io.Serializable;

/**
 */
public class WmsCompleteInstoreNoticeDetail implements Serializable {

    private String orgCode; //Organization code
    private String skuCode; // Product code *
    private String mainUnit; // Main unit code *
    private Integer estMainQty; // Number of main units *
    private String srcRowId; // Source single row ID *
    private String fstRowNo; // Source single row number *
    private String lotAtt01; // Production date
}
WmsCompleteInstoreNoticeHead
 private String srcBillNo; // Source bill number *
    private String srcBillType; // Source single type *
    private String srcSystem;// source system *
    private String fstBillNo;// Source bill number *
    private String agentCode;//Customer code //S-00190
    private String agentName;//Customer name //163
    //Preparation barcode number (product name of R00307 barcode ps:705911781122)
    private String departCode; //department code
    private String departName; //Department name
WmsCompleteInstoreNoticePkg
private String srcRowId; //Source single row ID
private String lpn; //tray code
private String devNo; //Pallet material number
WmsCompleteInStoreNoticeRequest
import com.jeeplus.common.utils.DateUtils;

import java.io.Serializable;
import java.util.UUID;

/**
 * @author
 * @date 2023/7/24
 */
public class WmsCompleteInStoreNoticeRequest implements Serializable {
    private String requestType; // Request interface number required, see interface list - interface number
    private String requestId; // Request unique code required, UUID, to prevent repeated requests
    private String requestTime; //Request timestamp required, format: 2023-06-09 12:00:00
    private String systemId; // Request system ID required, refer to enumeration information-source system
    private String userId; // Request user ID required, assigned by WMS
    private String token; // Request authentication code required, assigned by WMS
    private String signature; // Request signature optional, lower(md5(application identity ID + data + application encryption key))
    private WmsCompleteInStoreNoticeBean data;
    public WmsCompleteInStoreNoticeRequest(){
        this.requestId = UUID.randomUUID().toString();
        this.requestTime = DateUtils.getDate("yyyy-MM-dd HH:mm:ss");
        this.systemId = "MES";
    }
    public static WmsCompleteInStoreNoticeRequest init(String requestType, String userId, String token){
        WmsCompleteInStoreNoticeRequest common = new WmsCompleteInStoreNoticeRequest();
        common.setRequestType(requestType);
        common.setUserId(userId)
                .setToken(token);
        return common;
    }
    public String getRequestType() {
        return requestType;
    }

    public WmsCompleteInStoreNoticeRequest setRequestType(String requestType) {
        this.requestType = requestType;
        return this;
    }

    public String getRequestId() {
        return requestId;
    }

    public WmsCompleteInStoreNoticeRequest setRequestId(String requestId) {
        this.requestId = requestId;
        return this;
    }

    public String getRequestTime() {
        return requestTime;
    }

    public WmsCompleteInStoreNoticeRequest setRequestTime(String requestTime) {
        this.requestTime = requestTime;
        return this;
    }

    public String getSystemId() {
        return systemId;
    }

    public WmsCompleteInStoreNoticeRequest setSystemId(String systemId) {
        this.systemId = systemId;
        return this;
    }

    public String getUserId() {
        return userId;
    }

    public WmsCompleteInStoreNoticeRequest setUserId(String userId) {
        this.userId = userId;
        return this;
    }

    public String getToken() {
        return token;
    }

    public WmsCompleteInStoreNoticeRequest setToken(String token) {
        this.token = token;
        return this;
    }

    public String getSignature() {
        return signature;
    }

    public WmsCompleteInStoreNoticeRequest setSignature(String signature) {
        this.signature = signature;
        return this;
    }

    public WmsCompleteInStoreNoticeBean getData() {
        return data;
    }

    public WmsCompleteInStoreNoticeRequest setData(WmsCompleteInStoreNoticeBean data) {
        this.data = data;
        return this;
    }
}