| | |
| | | package com.zy.asrs.task.handler; |
| | | |
| | | import com.zy.asrs.entity.WrkMast; |
| | | import com.zy.asrs.service.WrkMastService; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.common.utils.HttpHandler; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | 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 org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | @Slf4j |
| | | @Service |
| | | @Transactional |
| | | public class AutomaticallyIssueWCSTasksHandler extends AbstractHandler<String> { |
| | | @Value("${wcs.switch}") |
| | | private String switchValue; |
| | | @Value("${wcs.address.URL}") |
| | | private String urlValue; |
| | | @Value("${wcs.address.createInTask}") |
| | | private String createInTaskValue; |
| | | @Value("${wcs.address.createOutTask}") |
| | | private String createOutTaskValue; |
| | | @Value("${wcs.address.createLocMoveTask}") |
| | | private String createLocMoveTaskValue; |
| | | |
| | | public ReturnT<String> start(List<WrkMast> wrkMast) { |
| | | try { |
| | | if (!Boolean.parseBoolean(String.valueOf(switchValue))) { |
| | | return SUCCESS; |
| | | } |
| | | if (wrkMast == null || wrkMast.isEmpty()) { |
| | | return SUCCESS; |
| | | } |
| | | List<WrkMast> toSend = new ArrayList<>(); |
| | | for (WrkMast m : wrkMast) { |
| | | if (m == null) { continue; } |
| | | if (Objects.equals(m.getWrkSts(), 11L)) { |
| | | if (m.getUpdMk() != null && "WCS_SENT".equalsIgnoreCase(m.getUpdMk())) { |
| | | continue; |
| | | } |
| | | toSend.add(m); |
| | | } |
| | | } |
| | | if (toSend.isEmpty()) { |
| | | return SUCCESS; |
| | | } |
| | | List<Map<String, Object>> tasks = new ArrayList<>(); |
| | | 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()); |
| | | } |
| | | t.put("seq",m.getPltType()); |
| | | t.put("orderId",m.getUserNo()); |
| | | tasks.add(t); |
| | | } |
| | | Map<String, Object> payload = new HashMap<>(); |
| | | payload.put("tasks", tasks); |
| | | |
| | | public ReturnT<String> start(WrkMast wrkMast) { |
| | | 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)) { |
| | | log.error("WCS下发出库任务失败, url:{}, path:{}, request:{}, response:{}", |
| | | urlValue, createOutTaskValue, JSON.toJSONString(payload), response); |
| | | return FAIL.setMsg("WCS下发出库任务失败"); |
| | | } |
| | | |
| | | Date now = new Date(); |
| | | for (WrkMast m : toSend) { |
| | | m.setUpdMk("WCS_SENT"); |
| | | m.setModiTime(now); |
| | | m.setWrkSts(12L); |
| | | } |
| | | // 延迟注入,避免循环依赖 |
| | | WrkMastService wrkMastService = com.core.common.SpringUtils.getBean(WrkMastService.class); |
| | | for (WrkMast m : toSend) { |
| | | try { |
| | | wrkMastService.updateById(m); |
| | | } catch (Exception ignore) {} |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("WCS出库任务下发异常", e); |
| | | return FAIL.setMsg(e.getMessage()); |
| | | } |
| | | return SUCCESS; |
| | | } |
| | | } |