zouyu
6 天以前 e50a43bb067adff10cd1dcc81349b1aafdfda882
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
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;
    }
}