自动化立体仓库 - WMS系统
zwl
18 小时以前 b7380ff70bcc962494cd6640fcc3eac21aaab0a1
src/main/java/com/zy/asrs/task/handler/AutomaticallyIssueWCSTasksHandler.java
@@ -57,48 +57,75 @@
            if (toSend.isEmpty()) {
                return SUCCESS;
            }
            List<Map<String, Object>> tasks = new ArrayList<>();
            Map<String, List<WrkMast>> groupByUserNo = new HashMap<>();
            for (WrkMast m : toSend) {
                Map<String, Object> t = new HashMap<>();
                t.put("taskNo", String.valueOf(m.getWrkNo()));
                t.put("staNo", String.valueOf(m.getStaNo()));
                t.put("locNo", m.getSourceLocNo());
                if (m.getIoPri() != null) {
                    t.put("taskPri", m.getIoPri().intValue());
                String key = m.getUserNo();
                if (key == null || key.trim().isEmpty()) {
                    key = "_NO_USER_";
                }
                t.put("seq",m.getPltType());
                t.put("orderId",m.getUserNo());
                tasks.add(t);
                List<WrkMast> list = groupByUserNo.get(key);
                if (list == null) {
                    list = new ArrayList<>();
                    groupByUserNo.put(key, list);
                }
                list.add(m);
            }
            Map<String, Object> payload = new HashMap<>();
            payload.put("tasks", tasks);
            String response = new HttpHandler.Builder()
                    .setUri(urlValue)
                    .setPath(createOutTaskValue)
                    .setHttps(urlValue != null && urlValue.startsWith("https://"))
                    .setTimeout(10, TimeUnit.SECONDS)
                    .setJson(JSON.toJSONString(payload))
                    .build()
                    .doPost();
            List<WrkMast> successList = new ArrayList<>();
            boolean hasError = false;
            JSONObject jsonObject = JSON.parseObject(response == null ? "{}" : response);
            Integer code = jsonObject.getInteger("code");
            if (code == null || !Objects.equals(code, 200)) {
                log.error("WCS下发出库任务失败, url:{}, path:{}, request:{}, response:{}",
                        urlValue, createOutTaskValue, JSON.toJSONString(payload), response);
            for (Map.Entry<String, List<WrkMast>> entry : groupByUserNo.entrySet()) {
                List<Map<String, Object>> tasks = new ArrayList<>();
                for (WrkMast m : entry.getValue()) {
                    Map<String, Object> t = new HashMap<>();
                    t.put("taskNo", String.valueOf(m.getWrkNo()));
                    t.put("staNo", String.valueOf(m.getStaNo()));
                    t.put("locNo", m.getSourceLocNo());
                    if (m.getIoPri() != null) {
                        t.put("taskPri", m.getIoPri().intValue());
                    }
                    t.put("batchSeq", m.getPltType());
                    if (m.getUserNo() != null) {
                        t.put("batch", m.getUserNo());
                    }
                    tasks.add(t);
                }
                Map<String, Object> payload = new HashMap<>();
                payload.put("tasks", tasks);
                String response = new HttpHandler.Builder()
                        .setUri(urlValue)
                        .setPath(createOutTaskValue)
                        .setHttps(urlValue != null && urlValue.startsWith("https://"))
                        .setTimeout(10, TimeUnit.SECONDS)
                        .setJson(JSON.toJSONString(payload))
                        .build()
                        .doPost();
                JSONObject jsonObject = JSON.parseObject(response == null ? "{}" : response);
                Integer code = jsonObject.getInteger("code");
                if (code == null || !Objects.equals(code, 200)) {
                    hasError = true;
                    log.error("WCS下发出库任务失败, url:{}, path:{}, userNo:{}, request:{}, response:{}",
                            urlValue, createOutTaskValue, entry.getKey(), JSON.toJSONString(payload), response);
                    continue;
                }
                successList.addAll(entry.getValue());
            }
            if (successList.isEmpty()) {
                return FAIL.setMsg("WCS下发出库任务失败");
            }
            Date now = new Date();
            for (WrkMast m : toSend) {
            for (WrkMast m : successList) {
                m.setUpdMk("WCS_SENT");
                m.setModiTime(now);
                m.setWrkSts(12L);
            }
            // 延迟注入,避免循环依赖
            WrkMastService wrkMastService = com.core.common.SpringUtils.getBean(WrkMastService.class);
            for (WrkMast m : toSend) {
            for (WrkMast m : successList) {
                try {
                    wrkMastService.updateById(m);
                } catch (Exception ignore) {}