首页 > 技术文章 > 远程调用将返回的结果转化成本地实体类字段

xianz666 2020-12-30 09:09 原文

package com.kakarote.crm.controller.sap;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.kakarote.core.common.Result;
import com.kakarote.core.entity.BasePage;
import com.kakarote.crm.constant.SapConstant;
import com.kakarote.crm.entity.sap.*;
import com.kakarote.crm.utils.HttpUtil;
import com.kakarote.crm.utils.SapUtil;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @author 
 * 
 */
@Slf4j
@RestController
@RequestMapping("/crmSapProduct")
@Api(tags = "查询sap产品")
public class SapProductController {
    @PostMapping("/getSapProduct")
    public Result<BasePage<SapProduct>> getSapProduct(@RequestBody Map<String,Object>map) {
        BasePage<SapProduct> base=new  BasePage<SapProduct>();
        log.info("查询sap产品map==================="+map);
        SapProduct searches=JSONObject.parseObject(JSONObject.toJSONString(map),SapProduct.class);
        log.info("转换后的查询参数searches======="+searches);
        Map<String,Object>infoTo=new HashMap<>();
        infoTo.put("pageNo",searches.getPageNo());
        infoTo.put("pageSize",searches.getPageSize());
        log.info("查询sap传入的参数infoTo================="+JSONObject.toJSONString(infoTo));
        Map<String, Object> mapInfo=new HashMap<>();
        Map<String,Object> resultMap=new HashMap<>();
        String url = SapConstant.API_CRM_ITEM_STOCK;
        log.info("url==========="+url+"----token====="+ SapUtil.getReadToken());
        String res = HttpUtil.doJsonPost(url,JSONObject.toJSONString(infoTo),SapUtil.getReadToken());
        log.info("Sap返回数据res==================="+res);
        log.info("res==========="+res);
        SapResult result = JSONObject.parseObject(res, SapResult.class);
        log.info("查询字段列表============result====="+result);
        List<SapProduct>list=new ArrayList<>();
        Integer pageSize=0;
        Integer pageNo=0;
        Integer pageTotal=0;
        Integer dataTotal=0;
        if(!ObjectUtil.isNull(result)){
            if(!ObjectUtil.isNull(result.getData())){
                if(!ObjectUtil.isNull(result.getData().getStock())){
                    List<SapStock> sapStockList=result.getData().getStock();
                    for(SapStock info:sapStockList){
                        SapProduct productInfo=JSONObject.parseObject(JSONObject.toJSONString(info),SapProduct.class);
                        list.add(productInfo);
                    }
                }
                if(!ObjectUtil.isNull(result.getData().getPage())){
                    pageSize=result.getData().getPage().getPageSize();
                    pageNo=result.getData().getPage().getPageNo();
                    pageTotal=result.getData().getPage().getPageTotal();
                    dataTotal=result.getData().getPage().getDataTotal();
                }
            }
        }
        log.info("查询sap产品list============"+list);
        base.setList(list);
        base.setSize(pageSize);
        base.setTotal(dataTotal);
        base.setPageNumber(pageNo);
        Result resultInfo =new Result();
        resultInfo.setData(base);
        resultInfo.setCode(0);
        resultInfo.setMsg("success");
        log.info("查询sap产品resultInfo========"+resultInfo);
       return resultInfo;
    }

}

  //实体类

package com.kakarote.crm.entity.sap;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import java.io.Serializable;
@Data
public class SapProduct implements Serializable {
   /**
    * 账套
    */
   @JSONField(name="company")
   private  String name;
   /**
    * 物料名称
    */
   @JSONField(name="itemName")
   private String unit;
   /**
    * 物料编码
    */
   @JSONField(name="itemCode")
   private String num;
   /**
    * 物料描述
    */
   @JSONField(name="frgnName")
   private String price;
   /**
    * 规格
    */
   @JSONField(name="u_Z20_SPEC")
   private String description;
   /**
    * 分类
    */
   @JSONField(name="u_I002")
   private String fliedWuggiv;
   /**
    * 保质期
    */
   @JSONField(name="u_I008")
   private String fliedMjgjau;
   /**
    * 分类名称
    */
   @JSONField(name="itmsGrpNam")
   private String fliedQsdslb;
   /**
    * 仓库
    */
   @JSONField(name="whsName")
   private String fliedYhbwdy;
   /**
    * 仓库编码
    */
   @JSONField(name="whsCode")
   private String fliedXmfxag;
   /**
    * 现存量
    */
   @JSONField(name="onHand")
   private Integer fliedStizdr;
   /**
    * 已承诺
    */
   @JSONField(name="isCommited")
   private Integer fliedYkdjhk;
   /**
    * 已订购
    */
   @JSONField(name="onOrder")
   private Integer fliedZegxtm;
   /**
    * 可用量
    */
   @JSONField(name="quantifiable")
   private Integer fliedWqihzd;
   //===查询参数
   @JSONField(name="page")
   private Integer pageNo;
   @JSONField(name="limit")
   private Integer pageSize;



}

  

推荐阅读