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 { @Autowired private DocTypeService docTypeService; @Autowired private OrderDetlService orderDetlService; @Autowired private OrderService orderService; @Autowired private ApiLogService apiLogService; @Transactional public ReturnT start(Order order) { DocType docType = docTypeService.selectById(order.getDocType()); if (null == docType) { return SUCCESS; } List 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; } }