|  |  | 
 |  |  |  | 
 |  |  | import com.alibaba.fastjson.JSON; | 
 |  |  | import com.alibaba.fastjson.JSONObject; | 
 |  |  | import com.core.common.Cools; | 
 |  |  | 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.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.model.MesPakoutParam; | 
 |  |  | 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; | 
 |  |  |  | 
 |  |  | 
 |  |  |     private OrderDetlService orderDetlService; | 
 |  |  |     @Autowired | 
 |  |  |     private ApiLogService apiLogService; | 
 |  |  |     @Autowired | 
 |  |  |     private DocTypeService docTypeService; | 
 |  |  |  | 
 |  |  |     @Transactional | 
 |  |  |     public ReturnT<String> start(Order order) { | 
 |  |  |         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())); | 
 |  |  |         DocType docType = docTypeService.selectById(order.getDocType()); | 
 |  |  |         if (null == docType) { | 
 |  |  |             return SUCCESS; | 
 |  |  |         } | 
 |  |  |         String response = ""; | 
 |  |  |         boolean success = false; | 
 |  |  |         try { | 
 |  |  |             response = new HttpHandler.Builder() | 
 |  |  |         List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId()); | 
 |  |  |         // 入库完成上报 | 
 |  |  |         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("服务器内部错误,请联系管理员"); | 
 |  |  |                 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系统失败"); | 
 |  |  |                 } | 
 |  |  |             } 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); } | 
 |  |  |             } | 
 |  |  |         } catch (Exception e) { | 
 |  |  |             log.error("fail", e); | 
 |  |  |             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |             return FAIL.setMsg(e.getMessage()); | 
 |  |  |         } finally { | 
 |  |  |         } | 
 |  |  |         // 出库完成上报 | 
 |  |  |         if (docType.getPakout() == 1) { | 
 |  |  |             MesPakoutParam pakoutParam = new MesPakoutParam(); | 
 |  |  |             pakoutParam.setTag(!order.getDocType$().equalsIgnoreCase("手动出库单")); | 
 |  |  |             pakoutParam.setPakoutTime(DateUtils.convert(order.getUpdateTime())); | 
 |  |  |             pakoutParam.setLgortFrom("5006"); | 
 |  |  |             pakoutParam.setLgortTo("1111"); | 
 |  |  |             if (!pakoutParam.isTag()) { | 
 |  |  |                 pakoutParam.setKunnr("C1000"); | 
 |  |  |             } | 
 |  |  |             pakoutParam.setOrderNo(order.getOrderNo()); | 
 |  |  |             for (OrderDetl orderDetl : orderDetls) { | 
 |  |  |                 String serial = Cools.isEmpty(orderDetl.getBatch()) ? "" : orderDetl.getBatch(); | 
 |  |  |                 pakoutParam.getList().add(new MesPakoutParam.Detl(orderDetl.getMatnr() + (Cools.isEmpty(serial) ? "" : "-" + serial), orderDetl.getAnfme())); | 
 |  |  |             } | 
 |  |  |             String response = ""; | 
 |  |  |             boolean success = false; | 
 |  |  |             try { | 
 |  |  |                 // 保存接口日志 | 
 |  |  | //                apiLogService.save( | 
 |  |  | //                        "成品库入库上报", | 
 |  |  | //                        MesConstant.URL + MesConstant.PAKIN_URL, | 
 |  |  | //                        null, | 
 |  |  | //                        "127.0.0.1", | 
 |  |  | //                        JSON.toJSONString(pakinParam), | 
 |  |  | //                        response, | 
 |  |  | //                        success | 
 |  |  | //                ); | 
 |  |  |             } catch (Exception e) { log.error("", e); } | 
 |  |  |                 response = new HttpHandler.Builder() | 
 |  |  |                         .setUri(MesConstant.URL) | 
 |  |  |                         .setPath(MesConstant.PAKOUT_URL) | 
 |  |  |                         .setJson(JSON.toJSONString(pakoutParam)) | 
 |  |  |                         .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.PAKOUT_URL, JSON.toJSONString(pakoutParam), 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.PAKOUT_URL, | 
 |  |  |                             null, | 
 |  |  |                             "127.0.0.1", | 
 |  |  |                             JSON.toJSONString(pakoutParam), | 
 |  |  |                             response, | 
 |  |  |                             success | 
 |  |  |                     ); | 
 |  |  |                 } catch (Exception e) { log.error("", e); } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return SUCCESS; | 
 |  |  |     } |