BasisService.java 10.1 KB
package com.huaheng.api.xinyi.service;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.huaheng.api.xinyi.constant.ResultStatus;
import com.huaheng.api.xinyi.constant.XinYiConstant;
import com.huaheng.api.xinyi.domian.*;
import com.huaheng.common.exception.BusinessException;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.DataUtils;
import com.huaheng.common.utils.http.HttpUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 信义基础数据库
 *
 * @author Enzo Cotter
 * @date 2019/12/20
 */
@Service
public class BasisService {

    @Resource
    private TokenService tokenService;
    @Resource
    private ApiTokenService apiTokenService;

    /**
     * 库存查询接口
     * 第二次查询,token过期不重试
     * @param organizationId 库存组织ID
     * @param bout 查询次数
     * @return
     */
    public List<Inventories> getInventories(String organizationId, int bout){
        TokenEntity tokenEntity = tokenService.getTokenEntity();

        Map<String, Object> map = new HashMap<>();
        map.put("organizationId", organizationId);
        map.put("wmsCode", "BH_HH01");
        String url = XinYiConstant.XINYI_HOST+XinYiConstant.PROJECT_NAME+"/aliWmsBasicData/getInventories";
        String result = HttpUtils.sendGet(url, tokenEntity, DataUtils.sendGetFormat(map));
        ResultEntityList<Inventories> resultEntity = JSON.parseObject(result,  new TypeReference<ResultEntityList<Inventories>>(){});
        if (ResultStatus.EXPIRED.equals(resultEntity.getStatus())){
            if (bout != 1) {
                apiTokenService.apiToken();
                bout = 1;
                this.getInventories(organizationId, bout);
            } else {
                throw new BusinessException("token过期,重新请求token失败");
            }
        } else if(!ResultStatus.SUCCESS.equals(resultEntity.getCode())){
            throw new ServiceException("服务器处理失败"+resultEntity.getStatus());
        } else if (!resultEntity.getOk()) {
            throw new ServiceException("服务器响应错误");
        } else {
           return resultEntity.getData();
        }
        return null;
    }

    /**
     * 物料查询
     * @param dateFrom 最后更新日期从(YYYY-MM-DD)
     * @param dateTo 最后更新日期至(YYYY-MM-DD)
     * @param pageNum 当前页
     * @param pageSize 每页行数
     * @param count 查询总行数标识
     * @param bout 查询次数
     * @param inventoryItemId 物料id
     * @param organizationId 库存组织id
     * @return
     */
    public List<MaterialXinyi> getItems(String dateFrom, String dateTo, Integer pageNum, Integer pageSize, boolean count, int bout, String inventoryItemId, String organizationId){
        /* 获取数据库中token,如果为空重新获取token*/
        TokenEntity tokenEntity = tokenService.getTokenEntity();

        Map<String, Object> map = new HashMap<>();
        map.put("wmsCode", "BH_HH01");
        map.put("inventoryItemId", inventoryItemId);
        map.put("dateFrom", dateFrom);
        map.put("dateto", dateTo);
        map.put("pageNum", pageNum);
        map.put("pageSize", pageSize);
        map.put("count", count);
        map.put("orderBy", "inventory_Item_Id");
        map.put("organizationId", organizationId);
        String url = XinYiConstant.XINYI_HOST+XinYiConstant.PROJECT_NAME+"/aliWmsBasicData/getItems";
        String result = HttpUtils.sendGet(url, tokenEntity, DataUtils.sendGetFormat(map));
        ResultEntityList<MaterialXinyi> resultEntity = JSON.parseObject(result,  new TypeReference<ResultEntityList<MaterialXinyi>>(){});
        /* 如果token过期,重新获取token后,执行this方法*/
        if (ResultStatus.EXPIRED.equals(resultEntity.getStatus())){
            if (bout != 1) {
                apiTokenService.apiToken();
                bout = 1;
                this.getItems(dateFrom, dateTo, pageNum, pageSize, count, bout, inventoryItemId, organizationId);
            } else {
                throw new BusinessException("token过期,重新请求token失败");
            }
        } else if(!ResultStatus.SUCCESS.equals(resultEntity.getCode())){
            throw new ServiceException("服务器处理失败"+resultEntity.getStatus());
        } else if (!resultEntity.getOk()) {
            throw new ServiceException("服务器响应错误");
        } else {
            return resultEntity.getData();
        }
        return null;
    }


    /**
     * 业务实体查询
     * @param bout 查询次数
     * @return
     */
    public List<OperatingUnits> getOperatingUnits(int bout){
        TokenEntity tokenEntity = tokenService.getTokenEntity();

        String url = XinYiConstant.XINYI_HOST+XinYiConstant.PROJECT_NAME+"/aliWmsBasicData/getOperatingUnits";
        Map<String, Object> map = new HashMap<>();
        map.put("wmsCode", "BH_HH01");
        String result = HttpUtils.sendGet(url, tokenEntity, DataUtils.sendGetFormat(map));
        ResultEntityList<OperatingUnits> resultEntity = JSON.parseObject(result,  new TypeReference<ResultEntityList<OperatingUnits>>(){});
        if (ResultStatus.EXPIRED.equals(resultEntity.getStatus())){
            if (bout != 1) {
                apiTokenService.apiToken();
                bout = 1;
                this.getOperatingUnits(bout);
            } else {
                throw new BusinessException("token过期,重新请求token失败");
            }
        } else if(!ResultStatus.SUCCESS.equals(resultEntity.getCode())){
            throw new ServiceException("服务器处理失败"+resultEntity.getStatus());
        } else if (!resultEntity.getOk()) {
            throw new ServiceException("服务器响应错误");
        } else {
            return resultEntity.getData();
        }
        return null;

    }

    /**
     * 库存组织查查
     * @param bout 次数
     * @return
     */
    public List<Organization> getOrganization(int bout) {
        TokenEntity tokenEntity = tokenService.getTokenEntity();
        String url = XinYiConstant.XINYI_HOST+XinYiConstant.PROJECT_NAME+"/aliWmsBasicData/getOrganization";
        Map<String, Object> map = new HashMap<>();
        map.put("wmsCode", "BH_HH01");
        String result = HttpUtils.sendGet(url, tokenEntity, DataUtils.sendGetFormat(map));
        ResultEntityList<Organization> resultEntity = JSON.parseObject(result,  new TypeReference<ResultEntityList<Organization>>(){});
        if (ResultStatus.EXPIRED.equals(resultEntity.getStatus())){
            if (bout != 1) {
                apiTokenService.apiToken();
                bout = 1;
                this.getOperatingUnits(bout);
            } else {
                throw new BusinessException("token过期,重新请求token失败");
            }
        } else if(!ResultStatus.SUCCESS.equals(resultEntity.getCode())){
            throw new ServiceException("服务器处理失败"+resultEntity.getStatus());
        } else if (!resultEntity.getOk()) {
            throw new ServiceException("服务器响应错误");
        } else {
            return resultEntity.getData();
        }
        return null;
    }

    /**
     * 查询单位转换
     * @param bout 查询次数
     * @param fromUomCode 单位(从)
     * @param toUomCode 单位(片)
     * @param inventoryItemId 物料ID
     * @return
     */
    public UnitConversions getUnitConversions(int bout, String fromUomCode, String toUomCode, String inventoryItemId){
        TokenEntity tokenEntity = tokenService.getTokenEntity();
        Map<String, Object> map = new HashMap<>();
        map.put("wmsCode", "BH_HH01");
        map.put("fromUomCode", fromUomCode);
        map.put("toUomCode", toUomCode);
        map.put("inventoryItemId", inventoryItemId);
        String url = XinYiConstant.XINYI_HOST+XinYiConstant.PROJECT_NAME+"/aliWmsBasicData/getUnitConversions";
        String result = HttpUtils.sendGet(url, tokenEntity ,DataUtils.sendGetFormat(map));
        ResultEntity<UnitConversions> resultEntity = JSON.parseObject(result, new TypeReference<ResultEntity<UnitConversions>>(){});
        if (ResultStatus.EXPIRED.equals(resultEntity.getStatus())){
            if (bout != 1) {
                apiTokenService.apiToken();
                bout = 1;
                this.getOperatingUnits(bout);
            } else {
                throw new BusinessException("token过期,重新请求token失败");
            }
        } else if(!ResultStatus.SUCCESS.equals(resultEntity.getCode())){
            throw new ServiceException("服务器处理失败"+resultEntity.getStatus());
        } else if (!resultEntity.getOk()) {
            throw new ServiceException("服务器响应错误");
        } else {
            return resultEntity.getData();
        }
        return null;
    }

    /**
     * 查询单位
     * @param bout 查询次数
     * @return
     */
    public List<Units> getUnits(int bout) {
        TokenEntity tokenEntity = tokenService.getTokenEntity();
        String url = XinYiConstant.XINYI_HOST+XinYiConstant.PROJECT_NAME+"/aliWmsBasicData/getUnits";
        Map<String, Object> map = new HashMap<>();
        map.put("wmsCode", "BH_HH01");
        String result = HttpUtils.sendGet(url, tokenEntity, DataUtils.sendGetFormat(map));
        ResultEntityList<Units> resultEntity = JSON.parseObject(result, new TypeReference<ResultEntityList<Units>>(){});
        if (ResultStatus.EXPIRED.equals(resultEntity.getStatus())){
            if (bout != 1) {
                apiTokenService.apiToken();
                bout = 1;
                this.getOperatingUnits(bout);
            } else {
                throw new BusinessException("token过期,重新请求token失败");
            }
        } else if(!ResultStatus.SUCCESS.equals(resultEntity.getCode())){
            throw new ServiceException("服务器处理失败"+resultEntity.getStatus());
        } else if (!resultEntity.getOk()) {
            throw new ServiceException("服务器响应错误");
        } else {
            return resultEntity.getData();
        }
        return null;
    }
}