New file |
| | |
| | | package com.zy.asrs.task.handler; |
| | | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.zy.asrs.entity.Order; |
| | | import com.zy.asrs.entity.WrkDetl; |
| | | import com.zy.asrs.entity.WrkMast; |
| | | import com.zy.asrs.service.ApiLogService; |
| | | import com.zy.asrs.service.OrderService; |
| | | import com.zy.asrs.service.WrkDetlService; |
| | | import com.zy.asrs.service.WrkMastService; |
| | | import com.zy.common.constant.AgvApiConstant; |
| | | import com.zy.common.utils.HttpHandler; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @author pang.jiabao |
| | | * @description AGV相关定时任务处理 |
| | | * @createDate 2024/10/19 10:05 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class AgvHandler { |
| | | |
| | | @Resource |
| | | private WrkMastService wrkMastService; |
| | | |
| | | @Resource |
| | | private WrkDetlService wrkDetlService; |
| | | |
| | | @Resource |
| | | private ApiLogService apiLogService; |
| | | |
| | | @Resource |
| | | private OrderService orderService; |
| | | |
| | | /** |
| | | * 出库呼叫agv接货 |
| | | */ |
| | | public void outboundCallAgvHandller(Integer wrkNo) { |
| | | |
| | | WrkMast wrkMast = wrkMastService.selectById(wrkNo); |
| | | if (wrkMast == null) { |
| | | log.error("出库呼叫agv接货,{}工作号没有找到工作档", wrkNo); |
| | | return; |
| | | } |
| | | |
| | | // 已经呼叫过agv接货则跳过 WrkMast表中ref_wrkno变量用做标识 0未呼叫,1呼叫成功 |
| | | if (wrkMast.getIoType() != 101 && wrkMast.getIoType() != 103 || wrkMast.getRefWrkno() == 1) { |
| | | return; |
| | | } |
| | | |
| | | // 工作明细 |
| | | List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo)); |
| | | |
| | | // 调用结果 |
| | | boolean success = false; |
| | | |
| | | // 构造请求头 |
| | | Map<String, Object> headers = new HashMap<>(); |
| | | headers.put("Content-Type", "application/json;charset=UTF-8"); |
| | | |
| | | // 构造请求体 |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.put("trayCode", wrkMast.getBarcode()); // 托盘条码 |
| | | |
| | | jsonObject.put("taskId", wrkMast.getWrkNo()); // 任务id |
| | | // 保存一个订单明细的单据编号 |
| | | String orderNo = ""; |
| | | JSONArray jsonArray = new JSONArray(); |
| | | for (WrkDetl wrkDetl : wrkDetls) { |
| | | JSONObject jsonObject1 = new JSONObject(); |
| | | jsonObject1.put("num", wrkDetl.getAnfme()); // 数量 |
| | | jsonObject1.put("itemId", wrkDetl.getMatnr()); // 物料ID |
| | | jsonObject1.put("itemCode", wrkDetl.getModel()); // 物料Code |
| | | orderNo = wrkDetl.getOrderNo(); |
| | | jsonArray.add(jsonObject1); |
| | | } |
| | | jsonObject.put("basicList", jsonArray); // 物料列表 |
| | | |
| | | Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderNo)); |
| | | |
| | | if (order != null) { |
| | | jsonObject.put("erpCode", orderNo); // 工单号 |
| | | jsonObject.put("outBoundtype", order.getDocType$()); // 入出库单据类型 |
| | | } |
| | | |
| | | String body = jsonObject.toString(); |
| | | String response = ""; |
| | | try { |
| | | response = new HttpHandler.Builder() |
| | | .setUri(AgvApiConstant.AGV_IP_PORT) |
| | | .setPath(AgvApiConstant.OUTBOUND_CALL_AGV_PATH) |
| | | .setHeaders(headers) |
| | | .setJson(body) |
| | | .build() |
| | | .doPost(); |
| | | if (!Cools.isEmpty(response)) { |
| | | JSONObject jsonObject1 = JSONObject.parseObject(response); |
| | | if ((Integer) jsonObject1.get("code") == 200) { |
| | | success = true; |
| | | wrkMast.setRefWrkno(1.0); |
| | | wrkMastService.updateById(wrkMast); |
| | | } else { |
| | | log.error("出库呼叫agv接货接口异常接口失败!!!url:{};request:{};response:{}", AgvApiConstant.AGV_IP_PORT + AgvApiConstant.OUTBOUND_CALL_AGV_PATH, body, response); |
| | | } |
| | | } else { |
| | | log.error("出库呼叫agv接货接口异常接口异常!!!url:{};request:{};response:{}", AgvApiConstant.AGV_IP_PORT + AgvApiConstant.OUTBOUND_CALL_AGV_PATH, body, response); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("出库呼叫agv接货接口异常:{}", e.getMessage()); |
| | | } finally { |
| | | try { |
| | | // 保存接口日志 |
| | | apiLogService.save( |
| | | "出库呼叫agv接货", |
| | | AgvApiConstant.AGV_IP_PORT + AgvApiConstant.OUTBOUND_CALL_AGV_PATH, |
| | | null, |
| | | "127.0.0.1", |
| | | jsonObject.toJSONString(), |
| | | response, |
| | | success |
| | | ); |
| | | } catch (Exception e) { |
| | | log.error("出库呼叫agv接货接口日志异常", e); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |