自动化立体仓库 - WCS系统
123
ZY
3 天以前 1a1e3398d15027a65e56e0ed82e54f3a4feea0b6
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
package com.zy.asrs.service.impl;
 
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.core.common.Cools;
import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.domain.enums.WorkNoType;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.wms.StorageEscalationParam;
import com.zy.asrs.entity.wms.WmsResult;
import com.zy.asrs.service.*;
import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
import com.zy.common.utils.Synchro;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
 
import java.io.IOException;
import java.util.Date;
 
@Slf4j
@Service("toWmsService")
public class ToWmsServiceImpl implements ToWmsService {
 
    @Autowired
    private TaskWrkService taskWrkService;
 
 
    @Autowired
    private TaskWrkReportService taskWrkReportService;
 
    @Autowired
    private CommonService commonService;
 
    @Autowired
    private LocMastService locMastService;
 
 
    @Autowired
    private ApiLogService apiLogService;
 
 
    @Value("${wms.url}")
    private String wmsUrl;
    /**
     * 申请入库
     */
    @Value("${wms.inboundTaskApplyPath}")
    private String inboundTaskApplyPath;
    /**
     * 任务开始时,WCS回调WMS
     */
    @Value("${wms.taskExecCallback}")
    private String taskExecCallback;
    /**
     * 任务完成结束时,WCS回调WMS
     */
    @Value("${wms.taskStatusFeedbackPath}")
    private String taskStatusFeedbackPath;
 
    @Value("${wms.code}")
    private String code;
 
    @Value("${wms.successCode}")
    private String successCode;
 
    @Value("${wms.msg}")
    private String msg;
 
    @Value("${wms.data}")
    private String data;
 
    @Override
    public void addReportLog(TaskWrk taskWrk) {
        TaskWrkReport taskWrkReport = new TaskWrkReport();
        Synchro.Copy(taskWrk, taskWrkReport);
        taskWrkReport.setCreateTime(new Date());
        taskWrkReportService.insert(taskWrkReport);
    }
 
    @Override
    public void addReportLog(TaskWrkLog taskWrk) {
        TaskWrkReport taskWrkReport = new TaskWrkReport();
        Synchro.Copy(taskWrk, taskWrkReport);
        taskWrkReport.setCreateTime(new Date());
        taskWrkReportService.insert(taskWrkReport);
    }
 
 
    @Override
    public void addReportLog(WrkMast taskWrk) {
        TaskWrkReport taskWrkReport = new TaskWrkReport();
        Synchro.Copy(taskWrk, taskWrkReport);
        taskWrkReport.setCreateTime(new Date());
        taskWrkReportService.insert(taskWrkReport);
    }
 
    @Override
    public TaskWrk getLocNoFromWms(StorageEscalationParam wmsParam) {
        String response = "";
        Boolean success = false;
        try {
            response = new HttpHandler.Builder()
                    .setUri(wmsUrl)
                    .setPath(inboundTaskApplyPath)
                    .setJson(JSON.toJSONString(wmsParam))
                    .build()
                    .doPost();
            if (!Cools.isEmpty(response)) {
                JSONObject jsonObject = JSON.parseObject(response);
                if (!Cools.isEmpty(jsonObject.get(code)) && jsonObject.get(code).equals(successCode)) {
                    WmsResult result = JSON.parseObject(jsonObject.get(data).toString(), WmsResult.class);
                    return createInTask(result, wmsParam.getBarcode(), wmsParam.getStationCode());
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
            log.info("请求wms报错,{}", e.getMessage());
        } finally {
            addApiLog("入库任务请求获取库位", wmsUrl + inboundTaskApplyPath, JSON.toJSONString(wmsParam), response, success);
        }
        return null;
    }
 
 
    private TaskWrk createInTask(WmsResult result, String barcode, Integer startPoint) {
        //String locNo = Utils.Fusion(result.getRow(), result.getFloor(), result.getColumn());
        String locNo = result.getLocNo();
        Date now = new Date();
        TaskWrk taskWrk = new TaskWrk();
        int workNo1 = commonService.getWorkNo(WorkNoType.PAKIN.type);//获取入库工作号
        taskWrk.setTaskNo(result.getTaskNo());//任务号
        taskWrk.setWrkNo(workNo1);
        taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//任务状态:派发
        taskWrk.setCreateTime(now);
        taskWrk.setIoType(1);//任务类型
        taskWrk.setIoPri(13);//优先级
        taskWrk.setBarcode(barcode);//条码
        LocMast locMast = locMastService.selectByLocNo(locNo);
        taskWrk.setCrnNo(locMast.getCrnNo());
        taskWrk.setTargetPoint(locNo);
        taskWrk.setStartPoint(startPoint + "");
        taskWrk.setCrnNo(result.getCrnNo());
        if (taskWrk.getIoType() == 1) {
            taskWrk.setWrkSts(2);
            if (!Cools.isEmpty(taskWrk.getTargetPoint())) {
                taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint());
            }
        }
        return taskWrk;
    }
 
    private void addApiLog(String nameSpace, String url, String param, String response, Boolean success) {
        apiLogService.save(nameSpace, url, null, "127.0.0.1", param, response, success);
    }
}