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.entity.ReportMesOrderResult; 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.utils.HttpHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.stream.Collectors; /** * Created by vincent on 2020/7/7 */ @Slf4j @Service public class OrderSyncHandler extends AbstractHandler { @Autowired private JdbcTemplate jdbcTemplate; @Autowired private OrderService orderService; @Autowired private OrderDetlService orderDetlService; @Autowired private ApiLogService apiLogService; @Autowired private DocTypeService docTypeService; @Transactional public ReturnT start(Order order) { DocType docType = docTypeService.selectById(order.getDocType()); if (null == docType) { return SUCCESS; } List orderDetls = orderDetlService.selectByOrderId(order.getId()); // 出库完成上报 if (docType.getPakout() == 1) { List collect = orderDetls.stream().map(orderDetl -> new ReportMesOrderResult(orderDetl.getBrand(), orderDetl.getQty().intValue())).collect(Collectors.toList()); String response = ""; boolean success = false; try { response = new HttpHandler.Builder() .setUri(MesConstant.MES_IP_PORT) .setPath(MesConstant.MES_CKSB_URL) .setJson(JSON.toJSONString(collect)) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("code").equals(200)) { success = true; // 修改订单状态 4.完成 ===>> 6.已上报 if (!orderService.updateSettle(order.getId(), 6L, null)) { throw new CoolException("服务器内部错误,请联系管理员"); } } else { log.error("请求MES出库单上报接口失败!!!url:{};request:{};response:{}", MesConstant.MES_IP_PORT+MesConstant.MES_CKSB_URL, JSON.toJSONString(collect), response); throw new CoolException("请求MES出库单上报接口失败"); } } catch (Exception e) { log.error("请求MES出库单上报接口异常", e); // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // return FAIL.setMsg(e.getMessage()); } finally { try { // 保存接口日志 apiLogService.save( "请求MES出库单上报接口", MesConstant.MES_IP_PORT + MesConstant.MES_CKSB_URL, null, "127.0.0.1", JSON.toJSONString(collect), response, success ); } catch (Exception e) { log.error("", e); } } } // 入库完成上报 // if (docType.getPakin() == 1) { // MesPakinParam pakinParam = new MesPakinParam(); // pakinParam.setPakinTime(DateUtils.convert(order.getUpdateTime())); // pakinParam.setLgortFrom("5008"); // pakinParam.setLgortTo("5006"); // for (OrderDetl orderDetl : orderDetls) { // String serial = Cools.isEmpty(orderDetl.getBatch()) ? "" : orderDetl.getBatch(); // pakinParam.getList().add(new MesPakinParam.Detl(orderDetl.getMatnr() + (Cools.isEmpty(serial) ? "" : "-" + serial), orderDetl.getAnfme())); // } // String response = ""; // boolean success = false; // try { // response = new HttpHandler.Builder() // .setUri(MesConstant.URL) // .setPath(MesConstant.PAKIN_URL) // .setJson(JSON.toJSONString(pakinParam)) // .build() // .doPost(); // JSONObject jsonObject = JSON.parseObject(response); // if (jsonObject.getInteger("code").equals(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(pakinParam), response); // throw new CoolException("上报mes系统失败"); // } // } catch (Exception e) { // log.error("fail", e); //// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // return FAIL.setMsg(e.getMessage()); // } finally { // try { // // 保存接口日志 // apiLogService.save( // "成品库入库上报", // MesConstant.URL + MesConstant.PAKIN_URL, // null, // "127.0.0.1", // JSON.toJSONString(pakinParam), // response, // success // ); // } catch (Exception e) { log.error("", e); } // } // } return SUCCESS; } }