自动化立体仓库 - WMS系统
dubin
1 天以前 2a9f6d72baa207bc91c98d0a5cd2235be9816691
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
package com.zy.asrs.task.handler;
 
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.core.exception.CoolException;
import com.zy.asrs.entity.DocType;
import com.zy.asrs.entity.Order;
import com.zy.asrs.entity.OrderDetl;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.DocTypeService;
import com.zy.asrs.service.OrderDetlService;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.common.constant.MesConstant;
import com.zy.common.model.MesReportParam;
import com.zy.common.utils.HttpHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.List;
 
@Slf4j
@Service
public class MesOrderSyncHandler extends AbstractHandler<String> {
 
    @Autowired
    private DocTypeService docTypeService;
 
    @Autowired
    private OrderDetlService orderDetlService;
 
    @Autowired
    private OrderService orderService;
 
    @Autowired
    private ApiLogService apiLogService;
 
    @Transactional
    public ReturnT<String> start(Order order) {
        DocType docType = docTypeService.selectById(order.getDocType());
        if (null == docType) {
            return SUCCESS;
        }
        List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
        for (OrderDetl orderDetl : orderDetls) {
            MesReportParam mesReportParam = new MesReportParam();
            mesReportParam.setOrderNo(order.getOrderNo()); // 订单编码
            mesReportParam.setPlanNo(orderDetl.getStandby3()); // 计划跟踪号
            mesReportParam.setLineId(orderDetl.getStandby1()); // 行内码
            mesReportParam.setWarehouseId("HL"); // 仓库编码
            mesReportParam.setLocId(""); // 库位号
            mesReportParam.setMatNr(orderDetl.getMatnr()); // 物料编码
            mesReportParam.setQty(orderDetl.getQty().toString()); // 本次出/入数量
            mesReportParam.setPalletId(""); // 托盘号
            mesReportParam.setBatch(orderDetl.getBatch()); // 批次
 
            String response = "";
            boolean success = false;
            try {
                response = new HttpHandler.Builder()
                        .setUri(MesConstant.URL)
                        .setPath(MesConstant.PAKIN_URL)
                        .setJson(JSON.toJSONString(mesReportParam))
                        .build()
                        .doPost();
                JSONObject jsonObject = JSON.parseObject(response);
                if (jsonObject.getInteger("code") == 200) {
                    success = true;
                    // 修改订单状态 4.完成 ===>> 6.已上报
                    if (!orderService.updateSettle(order.getId(), 6L, null)){
                        throw  new CoolException("服务器内部错误,请联系管理员");
                    }
                }else {
                    log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL+MesConstant.PAKIN_URL, JSON.toJSONString(mesReportParam), response);
                    throw new CoolException("上报mes系统失败");
                }
            }catch (Exception e) {
                log.error("fail", e);
                return FAIL.setMsg(e.getMessage());
            }finally {
                try {
                    // 保存接口日志
                    apiLogService.save(
                            "入/出库结果上报",
                            MesConstant.URL + MesConstant.PAKIN_URL,
                            null,
                            "127.0.0.1",
                            JSON.toJSONString(mesReportParam),
                            response,
                            success
                    );
                } catch (Exception e) { log.error("", e); }
            }
        }
        return SUCCESS;
    }
}