| | |
| | | import com.alibaba.excel.util.StringUtils; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.common.R; |
| | | import com.core.common.SnowflakeIdWorker; |
| | | import com.core.exception.CoolException; |
| | |
| | | * @param mesOutApply |
| | | * @return 1 成功;-1 订单重复; |
| | | */ |
| | | @Transactional |
| | | public int outBoundOrder(MesInApply mesOutApply){ |
| | | |
| | | // docType根据库类型确定 |
| | |
| | | orderPakout.setMemo(JSONObject.toJSONString(mesOutApply)); |
| | | orderPakout.setPakinPakoutStatus(2); |
| | | if (!orderPakoutService.insert(orderPakout)) { |
| | | log.error("MES保存出库订单主档失败"); |
| | | log.error("MES保存出库订单主档失败:{}",orderPakout); |
| | | throw new CoolException("保存出库订单主档失败"); |
| | | } |
| | | |
| | |
| | | OrderDetlPakout orderDetlPakout = new OrderDetlPakout(); |
| | | orderDetlPakout.setOrderId(orderPakout.getId()); |
| | | orderDetlPakout.setOrderNo(orderPakout.getOrderNo()); |
| | | orderDetlPakout.setAnfme(Double.valueOf(item.getAnfme())); |
| | | orderDetlPakout.setAnfme(item.getAnfme()); |
| | | orderDetlPakout.setQty(0.0); |
| | | orderDetlPakout.setMatnr(mat.getMatnr()); |
| | | orderDetlPakout.setMaktx(mat.getMaktx()); |
| | |
| | | orderDetlPakout.setStatus(1); |
| | | orderDetlPakout.setPakinPakoutStatus(2); |
| | | if (!orderDetlPakoutService.insert(orderDetlPakout)) { |
| | | log.error("MES保存出库订单明细档失败"); |
| | | log.error("MES保存出库订单明细档失败:{}",orderDetlPakout); |
| | | throw new CoolException("保存出库订单明细档失败"); |
| | | } |
| | | } |
| | | |
| | | // TODO:CTU出库动作 |
| | | |
| | | // todo 呼叫agv产线取空料架 |
| | | // TODO:若AGV和输送线没有安全交互,则要保证立库出货完成后再呼叫AGV。 |
| | | // 立库生成订单后,自动调度AGV从产线运输空刀架至立库缓存区。 |
| | | try { |
| | | if (!StringUtils.isEmpty(mesOutApply.getTaskNo()) && !StringUtils.isEmpty(mesOutApply.getStationId())) { |
| | | TransTask transTask = new TransTask(); |
| | | transTask.setTaskno(mesOutApply.getTaskNo()); |
| | | // transTask.setTaskname(mesOutApply.getTaskname()); |
| | | transTask.setTaskname(mesOutApply.getTaskname()); |
| | | transTask.setOrderNo(mesOutApply.getOrderNo()); |
| | | transTask.setTransType("02"); //运回刀架时默认02(下空托) mesOutApply.getTransType() |
| | | transTask.setCurProcess(mesOutApply.getProductLineId()); |
| | | transTask.setCurStationId(mesOutApply.getStationId()); |
| | | // transTask.setNextProcess(); |
| | | transTask.setNextStationId(WMS_TRANS_START_STATION_1); |
| | | transTask.setNextProcess(mesOutApply.getProductLineId()); |
| | | transTask.setNextStationId(mesOutApply.getNextStationId()); |
| | | // transTask.setItemno(mesOutApply.getItemNo()); |
| | | transTask.setQty(0); |
| | | transTask.setQty(1); |
| | | transTask.setProductLineId(mesOutApply.getProductLineId()); |
| | | // transTask.setItemBarcode(codes); |
| | | // transTask.setTuoPanId(entry.getKey()); |
| | | transTask.setDjNo(mesOutApply.getDjNo()); |
| | | transTask.setOperateType(1); |
| | | transTask.setAgvFactory(1); |
| | | JSONObject sendAgvTask = submitTask(transTask); |
| | | if (!"1".equals(sendAgvTask.getString("Success"))) { |
| | | log.error("出库下发agv运输任务失败", JSONObject.toJSONString(transTask)); |
| | | log.error("出库下发agv运输任务失败:{}", JSONObject.toJSONString(transTask)); |
| | | } |
| | | |
| | | |
| | | // // 按零件二维码查询有几个托,多托生成多个任务,每托对应零件二维码 |
| | | //// String barCode = barCodeListToStr(mesOutApply.getItemBarcode()); |
| | | // EntityWrapper<MatItemBarcode> matItemBarcodeEntityWrapper = new EntityWrapper<>(); |
| | | // matItemBarcodeEntityWrapper.in("item_barcode", barCode); |
| | | // List<MatItemBarcode> barcodes = matItemBarcodeMapper.selectList(matItemBarcodeEntityWrapper); |
| | | // if (barcodes != null) { |
| | | // Map<String, List<MatItemBarcode>> map = barcodes.stream().collect(Collectors.groupingBy(MatItemBarcode::getZapplet)); |
| | | // for (Map.Entry<String, List<MatItemBarcode>> entry : map.entrySet()) { |
| | | // List<MatItemBarcode> list = entry.getValue(); |
| | | // List<String> codes = new ArrayList<>(); |
| | | // for (MatItemBarcode zapllet : list) { |
| | | // codes.add(zapllet.getItemBarcode()); |
| | | // } |
| | | // |
| | | // |
| | | // } |
| | | // } |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("下发AGV运输任务失败", e); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | |
| | | * @param mesInApply |
| | | * @return 1 成功;-1 入库订单重复;0 部分失败; |
| | | */ |
| | | @Transactional |
| | | public int inBoundOrder(MesInApply mesInApply, int check){ |
| | | |
| | | // docType根据库类型确定 |
| | |
| | | OrderDetlPakin orderDetlPakin = new OrderDetlPakin(); |
| | | orderDetlPakin.setOrderId(orderPakin.getId()); |
| | | orderDetlPakin.setOrderNo(orderPakin.getOrderNo()); |
| | | orderDetlPakin.setAnfme(Double.valueOf(item.getAnfme())); |
| | | orderDetlPakin.setAnfme(item.getAnfme()); |
| | | orderDetlPakin.setQty(0.0); |
| | | orderDetlPakin.setMatnr(mat.getMatnr()); |
| | | orderDetlPakin.setMaktx(mat.getMaktx()); |
| | |
| | | } |
| | | } |
| | | |
| | | // 呼叫agv搬运 |
| | | if (!StringUtils.isEmpty(mesInApply.getTaskNo())) { |
| | | TransTask transTask = new TransTask(); |
| | | transTask.setTaskno(mesInApply.getTaskNo()); |
| | | transTask.setTaskname(mesInApply.getTaskNo()); |
| | | transTask.setOrderNo(mesInApply.getOrderNo()); |
| | | transTask.setTransType(mesInApply.getTransType()); |
| | | transTask.setCurProcess(mesInApply.getProductLineId()); |
| | | transTask.setCurStationId(mesInApply.getStationId()); |
| | | transTask.setNextStationId(WMS_TRANS_START_STATION_1); |
| | | // transTask.setItemno(mesInApply.get()); |
| | | // transTask.setQty(mesInApply.getQty()); |
| | | transTask.setProductLineId(mesInApply.getProductLineId()); |
| | | // transTask.setItemBarcode(itemBarcode); |
| | | transTask.setDjNo(mesInApply.getDjNo()); |
| | | transTask.setOperateType(1); |
| | | transTask.setAgvFactory(1); |
| | | JSONObject sendAgvTask = submitTask(transTask); |
| | | if (!"1".equals(sendAgvTask.getString("Success"))) { |
| | | log.error("出库下发agv运输任务失败:{}", JSONObject.toJSONString(transTask)); |
| | | } |
| | | } |
| | | |
| | | |
| | | // // TODO:是否绑定货物和托盘? |
| | |
| | | List<Task> tasks = taskService.selectList(wrapper); |
| | | if (tasks != null && !tasks.isEmpty()) { |
| | | result.put("Success", "2"); |
| | | result.put("Message", "任务重复发送"); |
| | | result.put("Message", "任务号重复发送:" + transTask.getTaskno()); |
| | | return result; |
| | | } |
| | | |
| | | try { |
| | | // 下发给RCS |
| | | RcsTaskSubmit rcsTaskSubmit = new RcsTaskSubmit(); |
| | | // 模板名 |
| | | rcsTaskSubmit.setTaskType("CS"); |
| | | rcsTaskSubmit.setRobotTaskCode(transTask.getTaskno()); |
| | | rcsTaskSubmit.setInitPriority(10); //默认10 |
| | | List<RcsTaskTargetRoute> targetRouteList = new ArrayList<>(); |
| | | RcsTaskTargetRoute startRoute = new RcsTaskTargetRoute(); |
| | | startRoute.setSeq(0); |
| | | startRoute.setCode(transTask.getCurStationId()); |
| | | startRoute.setOperation("COLLECT"); |
| | | targetRouteList.add(startRoute); |
| | | RcsTaskTargetRoute endRoute = new RcsTaskTargetRoute(); |
| | | endRoute.setSeq(1); |
| | | endRoute.setCode(transTask.getNextStationId()); |
| | | endRoute.setOperation("DELIVERY"); |
| | | targetRouteList.add(endRoute); |
| | | rcsTaskSubmit.setTargetRoute(targetRouteList); |
| | | |
| | | // 转发给海康或华晓RCS |
| | | RcsReturn rcsReturn = rcsService.submitTask(rcsTaskSubmit, transTask.getAgvFactory()); |
| | | if (rcsReturn.getCode().equals("SUCCESS")) { |
| | | int workNo = commonService.getWorkNo(WorkNoType.OTHER.type); |
| | | Date now = new Date(); |
| | | Task task = new Task(); |
| | |
| | | task.setAppeUser(defaultUserId); |
| | | task.setAppeTime(now); |
| | | task.setTaskNo(transTask.getTaskno()); |
| | | task.setBarcode(transTask.getDjNo()); // 刀架号 |
| | | task.setMemo(JSONObject.toJSONString(transTask)); |
| | | taskService.insert(task); |
| | | |
| | | if (taskService.insert(task)) { |
| | | Mat mat = matService.selectByMatnr("emptyDj"); |
| | | TaskDetl taskDetl = new TaskDetl(); |
| | | taskDetl.setWrkNo(task.getWrkNo()); |
| | | taskDetl.setIoTime(task.getIoTime()); |
| | | taskDetl.setMatnr(mat.getMatnr()); |
| | | taskDetl.setAnfme(0.0); |
| | | taskDetl.setStandby1(String.valueOf(transTask.getQty())); |
| | | taskDetl.setMaktx(mat.getMaktx()); |
| | | taskDetl.setSpecs(mat.getSpecs()); |
| | | taskDetl.setOrderNo(transTask.getOrderNo()); |
| | | taskDetl.setModiUser(defaultUserId); |
| | | taskDetl.setModiTime(now); |
| | | taskDetl.setAppeUser(defaultUserId); |
| | | taskDetl.setAppeTime(now); |
| | | taskDetlService.insert(taskDetl); |
| | | Mat mat = matService.selectByMatnr("emptyDj"); |
| | | TaskDetl taskDetl = new TaskDetl(); |
| | | taskDetl.setWrkNo(task.getWrkNo()); |
| | | taskDetl.setIoTime(task.getIoTime()); |
| | | taskDetl.setMatnr(mat.getMatnr()); |
| | | taskDetl.setAnfme(1.0); |
| | | taskDetl.setMaktx(mat.getMaktx()); |
| | | taskDetl.setSpecs(mat.getSpecs()); |
| | | taskDetl.setOrderNo(transTask.getOrderNo()); |
| | | taskDetl.setModiUser(defaultUserId); |
| | | taskDetl.setModiTime(now); |
| | | taskDetl.setAppeUser(defaultUserId); |
| | | taskDetl.setAppeTime(now); |
| | | taskDetlService.insert(taskDetl); |
| | | result.put("Success", "1"); |
| | | result.put("Message", "任务接收成功"); |
| | | |
| | | // EntityWrapper<WaitPakin> wrapper1 = new EntityWrapper<>(); |
| | | // wrapper1.eq("order_no", transTask.getTaskno()) |
| | | // .eq("matnr", mat.getMatnr()) |
| | | // .eq("anfme", transTask.getQty()); |
| | | // WaitPakin waitPakin = waitPakinService.selectOne(wrapper1); |
| | | // if (waitPakin != null) |
| | | // { |
| | | // TaskDetl taskDetl = new TaskDetl(); |
| | | // taskDetl.setWrkNo(task.getWrkNo()); |
| | | // taskDetl.setIoTime(task.getIoTime()); |
| | | // taskDetl.setMatnr(transTask.getItemno()); |
| | | // taskDetl.setAnfme(Double.valueOf(transTask.getQty())); |
| | | // taskDetl.setAnfme(0.0); |
| | | // taskDetl.setStandby1(String.valueOf(transTask.getQty())); |
| | | // taskDetl.setZpallet(waitPakin.getZpallet()); |
| | | // taskDetl.setMaktx(mat.getMaktx()); |
| | | // taskDetl.setSpecs(mat.getSpecs()); |
| | | // taskDetl.setOrderNo(transTask.getOrderNo()); |
| | | // taskDetl.setModiUser(defaultUserId); |
| | | // taskDetl.setModiTime(now); |
| | | // taskDetl.setAppeUser(defaultUserId); |
| | | // taskDetl.setAppeTime(now); |
| | | // taskDetlService.insert(taskDetl); |
| | | // } |
| | | // else { |
| | | // result.put("Success", "2"); |
| | | // result.put("Message", "接收任务失败"); |
| | | // // Throw |
| | | // } |
| | | |
| | | // 下发给RCS |
| | | RcsTaskSubmit rcsTaskSubmit = new RcsTaskSubmit(); |
| | | rcsTaskSubmit.setRobotTaskCode(transTask.getTaskno()); |
| | | rcsTaskSubmit.setInitPriority(10); //默认10 |
| | | List<RcsTaskTargetRoute> targetRouteList = new ArrayList<>(); |
| | | RcsTaskTargetRoute startRoute = new RcsTaskTargetRoute(); |
| | | startRoute.setSeq(0); |
| | | startRoute.setCode(transTask.getCurStationId()); |
| | | startRoute.setOperation("COLLECT"); |
| | | targetRouteList.add(startRoute); |
| | | RcsTaskTargetRoute endRoute = new RcsTaskTargetRoute(); |
| | | endRoute.setSeq(1); |
| | | endRoute.setCode(transTask.getNextStationId()); |
| | | endRoute.setOperation("DELIVERY"); |
| | | targetRouteList.add(endRoute); |
| | | rcsTaskSubmit.setTargetRoute(targetRouteList); |
| | | |
| | | // 转发给海康或华晓RCS |
| | | int success = rcsService.submitTask(rcsTaskSubmit, transTask.getAgvFactory()); |
| | | if (success == 1) { |
| | | result.put("Success", "1"); |
| | | result.put("Message", "任务接收成功"); |
| | | } else { |
| | | result.put("Success", "2"); |
| | | result.put("Message", "任务下发给RCS失败"); |
| | | } |
| | | } else { |
| | | result.put("Success", "2"); |
| | | result.put("Message", "接收任务失败"); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("下发运输任务错位 - {}", transTask, e); |
| | | } else { |
| | | result.put("Success", "2"); |
| | | result.put("Message", "任务下发给RCS失败"); |
| | | } |
| | | |
| | | return result; |
| | |
| | | task.setMemo(JSONObject.toJSONString(transTask)); |
| | | taskService.updateById(task); |
| | | // 转发给海康或华晓RCS |
| | | int success = rcsService.submitTask(rcsTaskSubmit, transTask.getAgvFactory()); |
| | | |
| | | if (success == 1) { |
| | | RcsReturn rcsReturn = rcsService.submitTask(rcsTaskSubmit, transTask.getAgvFactory()); |
| | | if (rcsReturn.getCode().equals("SUCCESS")) { |
| | | flag = true; |
| | | } |
| | | } catch (Exception e) { |