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.core.domain.Result; import com.ruoyi.common.config.IfsProperties; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; /** * @Author zhuo * @Date 2024/9/29 */ @Slf4j @AllArgsConstructor @Component public class IfsApiUtils { private IfsProperties ifsProperties; /** * 查询采购订单未检验 */ public List> getInventory(String inAttr) { String procedureName = "QUERY_POL_RECEIPT_STD"; JSONObject stockMap = getJsonObject(procedureName, inAttr); String body = HttpRequest.post(ifsProperties.getCustorderPort()).form(stockMap).execute().body(); ObjectMapper objectMapper = new ObjectMapper(); try { Map map = objectMapper.readValue(body, Map.class); List> maps = objectMapper.readValue(JSONUtil.toJsonStr(map.get("LIST_INFO")), new TypeReference>>() { }); log.info("获取采购订单-->>" + maps); return maps; } catch (JsonProcessingException e) { e.printStackTrace(); throw new RuntimeException(e); } } /** * 登记采购检验结果STD */ public Result getProcurementResults(String inAttr) { return getResult("REGIST_INSPECTION_RESULTS_STD", inAttr, ifsProperties.getCustorder(), "登记采购检验结果-->"); } /** * 原材料检验-检验后移库 * * @param inAttr * @return */ public Result moveReceipt(String inAttr) { return getResult("MOVE_RECEIPT_STD", inAttr, ifsProperties.getCustorder(), "检验后移库-->"); } /** * 原材料检验-采购接收更改批号 * * @param inAttr * @return */ public Result updateMoveReceiptLot(String inAttr) { return getResult("MODIFY_PURCH_RECEIPT_LOT_STD", inAttr, ifsProperties.getCustorder(), "修改采购订单批次号-->"); } /** * 查询库存数据 * * @param inAttr * @return */ public Result getIfsStock(String inAttr) { return getResult("QUERY_INVENTORY_INFO_STD", inAttr, ifsProperties.getCustorderPort(), "查询库存信息-->"); } /** * 通用接口 * @param procedureName 方法名 * @param inAttr 传参 * @param url 地址 * @param image 消息 * @return */ private Result getResult(String procedureName, String inAttr, String url, String image) { 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 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) { 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); return stockMap; } }