| | |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.core.common.DateUtils; |
| | | 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.model.MesPakinParam; |
| | | 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 org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | | |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * Created by vincent on 2020/7/7 |
| | |
| | | private OrderService orderService; |
| | | @Autowired |
| | | private OrderDetlService orderDetlService; |
| | | @Autowired |
| | | private ApiLogService apiLogService; |
| | | @Autowired |
| | | private DocTypeService docTypeService; |
| | | |
| | | @Transactional |
| | | public ReturnT<String> start(Order order) { |
| | | DocType docType = docTypeService.selectById(order.getDocType()); |
| | | if (null == docType) { |
| | | return SUCCESS; |
| | | } |
| | | List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId()); |
| | | |
| | | MesPakinParam pakinParam = new MesPakinParam(); |
| | | pakinParam.setPakinTime(DateUtils.convert(order.getUpdateTime())); |
| | | pakinParam.setLgortFrom("5008"); |
| | | pakinParam.setLgortTo("5006"); |
| | | for (OrderDetl orderDetl : orderDetls) { |
| | | pakinParam.getList().add(new MesPakinParam.Detl(orderDetl.getMatnr(), orderDetl.getAnfme())); |
| | | } |
| | | // 出库完成上报 |
| | | if (docType.getPakout() == 1) { |
| | | |
| | | try { |
| | | String 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)) { |
| | | // 修改订单状态 4.完成 ===>> 6.已上报 |
| | | if (!orderService.updateSettle(order.getId(), 6L, null)) { |
| | | throw new CoolException("服务器内部错误,请联系管理员"); |
| | | // 盘点单上报 |
| | | if (docType.getDocName().equals("盘点单")) { |
| | | List<ReportMesOrderResult> collect = orderDetls.stream().map(orderDetl -> |
| | | new ReportMesOrderResult(orderDetl.getBrand(), orderDetl.getQty().intValue())).collect(Collectors.toList()); |
| | | JSONObject object = new JSONObject(); |
| | | object.put("orderNo",order.getOrderNo()); |
| | | object.put("orderDetls",collect); |
| | | String body = JSON.toJSONString(object); |
| | | String response = ""; |
| | | boolean success = false; |
| | | try { |
| | | response = new HttpHandler.Builder() |
| | | .setUri(MesConstant.MES_CC_IP_PORT) |
| | | .setPath(MesConstant.MES_CC_SB_URL) |
| | | .setJson(body) |
| | | .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("更新订单上报完成失败:" + order); |
| | | } |
| | | } else { |
| | | log.error("请求仓储MES盘点单上报接口失败!!!url:{};request:{};response:{}", MesConstant.MES_CC_IP_PORT+MesConstant.MES_CC_SB_URL, JSON.toJSONString(collect), response); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("请求仓储MES盘点单上报接口异常", e); |
| | | } finally { |
| | | try { |
| | | // 保存接口日志 |
| | | apiLogService.save( |
| | | "请求仓储MES盘点单上报接口", |
| | | MesConstant.MES_CC_IP_PORT + MesConstant.MES_CC_SB_URL, |
| | | null, |
| | | "127.0.0.1", |
| | | JSON.toJSONString(collect), |
| | | response, |
| | | success |
| | | ); |
| | | } catch (Exception e) { log.error("", e); } |
| | | } |
| | | } else { |
| | | log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL+MesConstant.PAKIN_URL, JSON.toJSONString(pakinParam), response); |
| | | throw new CoolException("上报mes系统失败"); |
| | | } else if(docType.getDocName().equals("出库申请单") || docType.getDocName().equals("反修出库单")) { // 返修出库单/出库申请单上报 |
| | | List<ReportMesOrderResult> collect = orderDetls.stream().map(orderDetl -> |
| | | new ReportMesOrderResult(orderDetl.getBrand(), orderDetl.getQty().intValue() == 1 ? 2 : 3)).collect(Collectors.toList()); |
| | | JSONObject object = new JSONObject(); |
| | | object.put("outboundNumber",order.getOrderNo()); |
| | | object.put("outBounds",collect); |
| | | String body = JSON.toJSONString(object); |
| | | String response = ""; |
| | | boolean success = false; |
| | | try { |
| | | response = new HttpHandler.Builder() |
| | | .setUri(MesConstant.MES_ZL_IP_PORT) |
| | | .setPath(MesConstant.MES_ZL_SB_URL) |
| | | .setJson(body) |
| | | .build() |
| | | .doPost(); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | Integer code = jsonObject.getInteger("code"); |
| | | Boolean state = jsonObject.getBoolean("state"); |
| | | if (code == 200 && state) { |
| | | success = true; |
| | | // 修改订单状态 4.完成 ===>> 6.已上报 |
| | | if (!orderService.updateSettle(order.getId(), 6L, null)) { |
| | | throw new CoolException("更新订单上报完成失败:" + order); |
| | | } |
| | | } else { |
| | | log.error("请求质量MES出库单上报接口失败!!!url:{};request:{};response:{}", MesConstant.MES_ZL_IP_PORT+MesConstant.MES_ZL_SB_URL, JSON.toJSONString(collect), response); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("请求质量MES出库单上报接口异常", e); |
| | | } finally { |
| | | try { |
| | | // 保存接口日志 |
| | | apiLogService.save( |
| | | "请求质量MES出库单上报接口", |
| | | MesConstant.MES_ZL_IP_PORT + MesConstant.MES_ZL_SB_URL, |
| | | null, |
| | | "127.0.0.1", |
| | | JSON.toJSONString(collect), |
| | | response, |
| | | success |
| | | ); |
| | | } catch (Exception e) { log.error("", e); } |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("fail", e); |
| | | e.printStackTrace(); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg(e.getMessage()); |
| | | } |
| | | // 入库完成上报 |
| | | // 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; |
| | | } |
| | | |