package com.ruoyi.common.utils.api;
|
|
import cn.hutool.http.HttpRequest;
|
import cn.hutool.json.JSONUtil;
|
import com.alibaba.fastjson.JSONObject;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.type.TypeReference;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.ruoyi.common.config.ifs.IfsConfig;
|
import com.ruoyi.common.core.domain.Result;
|
import com.ruoyi.common.config.ifs.IfsProperties;
|
import lombok.AllArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.stereotype.Component;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* @Author zhuo
|
* @Date 2024/9/29
|
*/
|
@Slf4j
|
@AllArgsConstructor
|
@Component
|
public class IfsApiUtils {
|
|
private IfsConfig ifsConfig;
|
|
public IfsProperties getPropByContract(String contract){
|
return ifsConfig.getProps().stream().filter(f-> StringUtils.equals(contract,f.getContract())).findFirst().orElse(new IfsProperties());
|
}
|
|
/**
|
* 查询采购订单未检验
|
*/
|
public List<Map<String, Object>> getInventory(Map<String,Object> inAttrMap) {
|
List<Map<String, Object>> maps = new ArrayList<>();
|
ifsConfig.getProps().forEach(ifsProp->{
|
String procedureName = "QUERY_POL_RECEIPT_STD";
|
inAttrMap.put("LOCATION_NO",ifsProp.getTobeInspectedLocation());
|
String inAttr = JSONUtil.toJsonStr(inAttrMap);
|
JSONObject stockMap = getJsonObject(procedureName, inAttr,ifsProp.getContract(),ifsProp.getContractKeyPost());
|
String body = HttpRequest.post(ifsProp.getCustorderPort()).form(stockMap).execute().body();
|
ObjectMapper objectMapper = new ObjectMapper();
|
try {
|
Map map = objectMapper.readValue(body, Map.class);
|
maps.addAll(objectMapper.readValue(JSONUtil.toJsonStr(map.get("LIST_INFO")), new TypeReference<List<Map<String, Object>>>() {
|
}));
|
log.info("获取采购订单-->>" + maps);
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
throw new RuntimeException(e);
|
}
|
});
|
return maps;
|
}
|
|
|
|
/**
|
* 登记采购检验结果STD
|
*/
|
public Result getProcurementResults(String contract,String inAttr) {
|
return getResult(contract,"REGIST_INSPECTION_RESULTS_STD", inAttr, "GET", "登记采购检验结果-->");
|
}
|
|
|
/**
|
* 原材料检验-检验后移库
|
*
|
* @param inAttr
|
* @return
|
*/
|
public Result moveReceipt(String contract,String inAttr) {
|
return getResult(contract,"MOVE_RECEIPT_STD", inAttr, "GET", "检验后移库-->");
|
}
|
|
|
/**
|
* 原材料检验-采购接收更改批号
|
*
|
* @param inAttr
|
* @return
|
*/
|
public Result updateMoveReceiptLot(String contract,String inAttr) {
|
return getResult(contract,"MODIFY_PURCH_RECEIPT_LOT_STD", inAttr, "GET", "修改采购订单批次号-->");
|
}
|
|
|
|
/**
|
* 查询库存数据
|
*
|
* @param inAttr
|
* @return
|
*/
|
public Result getIfsStock(String contract,String inAttr) {
|
return getResult(contract,"QUERY_INVENTORY_INFO_STD", inAttr, "POST", "查询库存信息-->");
|
}
|
|
/**
|
* 库存物料批次属性新增修改接口
|
*
|
* @param inAttr
|
* @return
|
*/
|
public Result importPartLotAttr(String contract,String inAttr) {
|
return getResult(contract,"IMPORT_PART_LOT_ATTR_STD", inAttr, "GET", "库存物料批次属性新增修改接口-->");
|
}
|
|
/**
|
* 通用接口
|
* @param contract IFS域
|
* @param procedureName 方法名
|
* @param inAttr 传参
|
* @param urlType 请求类型(GET/POST)
|
* @param image 消息
|
* @return
|
*/
|
private Result<?> getResult(String contract,String procedureName, String inAttr, String urlType, String image) {
|
IfsProperties ifsProperties = getPropByContract(contract);
|
JSONObject stockMap = new JSONObject();
|
stockMap.put("procedureName", procedureName);
|
stockMap.put("contract", ifsProperties.getContract());
|
stockMap.put("contractKey", ifsProperties.getContractKeyPost());
|
stockMap.put("userId", "lims_user");
|
stockMap.put("inAttr", inAttr);
|
String url = StringUtils.equals("GET",urlType)?ifsProperties.getCustorder():ifsProperties.getCustorderPort();
|
String body = HttpRequest.post(url).form(stockMap).execute().body();
|
log.info(image + body);
|
ObjectMapper objectMapper = new ObjectMapper();
|
try {
|
Map map = objectMapper.readValue(body, Map.class);
|
String successFlag = map.get("SuccessFlag").toString();
|
if (Integer.valueOf(successFlag) == 1) {
|
return Result.success(map);
|
} else {
|
return Result.fail(map.get("ErrorMsg").toString());
|
}
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
return Result.fail(e.getMessage());
|
}
|
}
|
|
/**
|
* 获取添加请求信息
|
* @param procedureName 结构名称
|
* @param inAttr 请求参数
|
* @return
|
*/
|
private JSONObject getJsonObject(String procedureName, String inAttr,String contract,String contractKeyPost) {
|
JSONObject stockMap = new JSONObject();
|
stockMap.put("procedureName", procedureName);
|
stockMap.put("contract", contract);
|
stockMap.put("contractKey", contractKeyPost);
|
stockMap.put("userId", "lims_user");
|
stockMap.put("inAttr", inAttr);
|
return stockMap;
|
}
|
}
|