| | |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.common.DateUtils; |
| | | import com.core.common.SnowflakeIdWorker; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.Order; |
| | | import com.zy.asrs.entity.OrderDetl; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.param.OrderMesXGHYParam; |
| | | 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.service.impl.WrkDetlServiceImpl; |
| | | 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.beans.factory.annotation.Value; |
| | | 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.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | private OrderDetlService orderDetlService; |
| | | @Autowired |
| | | private ApiLogService apiLogService; |
| | | @Autowired |
| | | private DocTypeService docTypeService; |
| | | @Autowired |
| | | private WrkDetlServiceImpl wrkDetlService; |
| | | @Autowired |
| | | private SnowflakeIdWorker snowflakeIdWorker; |
| | | |
| | | @Value("${srXghyMes.productInventoryUrl}") |
| | | private String productInventoryUrl; |
| | | @Value("${srXghyMes.productInventory}") |
| | | private String productInventory; |
| | | |
| | | @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("服务器内部错误,请联系管理员"); |
| | | } |
| | | } 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); } |
| | | } |
| | | } |
| | | // 出库完成上报 |
| | | 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 { |
| | | 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; |
| | | } |
| | | |
| | | @Transactional |
| | | public ReturnT<String> startV1(WrkMast wrkMast) { |
| | | // List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); |
| | | List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<>()); |
| | | if (wrkDetls.isEmpty()) { |
| | | return SUCCESS; |
| | | } |
| | | String packageGroupNo; //包装组号(徐工没有,只有箱号卷号一对一) //null |
| | | String outOrIn; //out 出;in入; |
| | | /* |
| | | * 接口1=》不合格品出库二楼: 不合格品出库 |
| | | * 盘点出库:盘点出库 |
| | | * 盘点入库:盘点入库 |
| | | * |
| | | * |
| | | * 接口2=》正常出库二楼: 拆包装检出库 |
| | | * 1楼退库:退货入库 |
| | | * |
| | | * 组货单出:成品出库 |
| | | * |
| | | * 2楼机械臂入库:成品入库 |
| | | * 1楼手动出库:成品出库 |
| | | * */ |
| | | String stockType = null; //单据类型 |
| | | // and (wrk_sts=5 or wrk_sts=15 or (wrk_sts!=5 and (io_type = 53 or io_type = 57)) or io_type = 107) |
| | | if (wrkMast.getIoType()==1){ |
| | | outOrIn = "in"; |
| | | } else if (wrkMast.getIoType()==101 || wrkMast.getIoType()==53) { |
| | | outOrIn = "out"; |
| | | } else if (wrkMast.getIoType()==107) { |
| | | outOrIn = "out"; |
| | | stockType = "盘点出库"; |
| | | } else if (wrkMast.getIoType()==57) { |
| | | outOrIn = "in"; |
| | | stockType = "盘点入库"; |
| | | } else { |
| | | return SUCCESS; |
| | | } |
| | | for (WrkDetl wrkDetl : wrkDetls) { |
| | | if (outOrIn.equals("out")){ |
| | | if (!Cools.isEmpty(stockType) && stockType.equals("盘点出库")){ |
| | | wrkDetl.setManu("盘点出库"); |
| | | } else if (!Cools.isEmpty(wrkDetl.getOrderNo()) && !wrkDetl.getOrderNo().equals("不合格品出库")){ |
| | | Order order = orderService.selectByNo(wrkDetl.getOrderNo()); |
| | | if (!Cools.isEmpty(order)){ |
| | | DocType docType = docTypeService.selectById(order.getDocType()); |
| | | if (!Cools.isEmpty(docType)) { |
| | | if (docType.getDocName().equals("组货单")){ |
| | | // packageGroupNo = order.getItemName(); |
| | | wrkDetl.setDeadTime(order.getItemName()); |
| | | } |
| | | wrkDetl.setManu(docType.getDocName$()); |
| | | } else { |
| | | wrkDetl.setManu("成品出库"); |
| | | } |
| | | } else { |
| | | wrkDetl.setManu("成品出库"); |
| | | } |
| | | } else if (wrkDetl.getOrderNo().equals("不合格品出库")){ |
| | | wrkDetl.setManu("不合格品出库"); |
| | | } |
| | | } else { |
| | | wrkDetl.setManu("成品入库"); |
| | | if (!Cools.isEmpty(stockType) && stockType.equals("盘点入库")){ |
| | | wrkDetl.setManu("盘点入库"); |
| | | } else if (!Cools.isEmpty(wrkDetl.getOrderNo())){ |
| | | Order order = orderService.selectByNo(wrkDetl.getOrderNo()); |
| | | if (!Cools.isEmpty(order)){ |
| | | DocType docType = docTypeService.selectById(order.getDocType()); |
| | | if (!Cools.isEmpty(docType)) { |
| | | wrkDetl.setManu(docType.getDocName$()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | OrderMesXGHYParam orderMesXGHYParam = new OrderMesXGHYParam(wrkDetls,outOrIn); |
| | | orderMesXGHYParam.setBarcode(String.valueOf(snowflakeIdWorker.nextId())); |
| | | orderMesXGHYParam.setPalletizingNo(1); |
| | | |
| | | |
| | | |
| | | String response = ""; |
| | | boolean success = false; |
| | | try { |
| | | response = new HttpHandler.Builder() |
| | | .setUri(productInventoryUrl) |
| | | .setPath(productInventory) |
| | | .setJson(JSON.toJSONString(orderMesXGHYParam)) |
| | | .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系统失败"); |
| | | log.error("请求接口失败!!!url:{};request:{};response:{}", productInventoryUrl+"/"+productInventory, JSON.toJSONString(orderMesXGHYParam), response); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("fail", e); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg(e.getMessage()); |
| | | } finally { |
| | | try { |
| | | // 保存接口日志 |
| | | apiLogService.save( |
| | | "成品库入库上报", |
| | | MesConstant.URL + MesConstant.PAKIN_URL, |
| | | "成品库入库上报MES", |
| | | productInventoryUrl+"/"+productInventory, |
| | | null, |
| | | "127.0.0.1", |
| | | JSON.toJSONString(pakinParam), |
| | | JSON.toJSONString(orderMesXGHYParam), |
| | | response, |
| | | success |
| | | ); |