| | |
| | | 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; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.digitaltwin.DtLocDetailVo; |
| | | import com.zy.asrs.entity.mes.*; |
| | | import com.zy.asrs.entity.param.CombParam; |
| | | import com.zy.asrs.entity.rcs.*; |
| | |
| | | // 规则定义:默认第3层为同步的物料类型 |
| | | long secondPath = 2; |
| | | String secondParentName = WMS_CURRENT_NAME; |
| | | // long locType = 1; |
| | | long userId = defaultUserId; |
| | | // if (mesMatInfo.getModified_operator1() != null && !mesMatInfo.getModified_operator1().isEmpty()) { |
| | | // userId = Long.parseLong(mesMatInfo.getModified_operator1()); |
| | | // } |
| | | Date now = new Date(); |
| | | if (mesMatInfo.getModified_date1() != null && !mesMatInfo.getModified_date1().isEmpty()) { |
| | | now = Date.from(OffsetDateTime.parse(mesMatInfo.getModified_date1()).toInstant()); |
| | |
| | | // 物料更新 |
| | | long tagId = tagService.selectByName(mesMatInfo.getItem_type(), 3).getId(); |
| | | Mat mat = matService.selectByMatnr(mesMatInfo.getItem_no()); |
| | | Mat newMat = new Mat(); |
| | | newMat.setMatnr(mesMatInfo.getItem_no()); |
| | | newMat.setMaktx(mesMatInfo.getDescription()); |
| | | newMat.setTagId(tagId); |
| | | newMat.setLocType(tagId); //locType |
| | | newMat.setSpecs(mesMatInfo.getSpecification()); |
| | | newMat.setUnit("件"); //统一为件,mesMatInfo.getUnit_of_measure() |
| | | newMat.setModel(mesMatInfo.getClassification_code()); |
| | | newMat.setMemo(JSONObject.toJSONString(mesMatInfo)); |
| | | newMat.setCreateBy(userId); |
| | | newMat.setCreateTime(now); |
| | | newMat.setUpdateBy(userId); |
| | | newMat.setUpdateTime(now); |
| | | newMat.setStatus(1); |
| | | if (mat == null) { |
| | | if (!matService.insert(newMat)) |
| | | return -2; |
| | | Mat newMat = new Mat(); |
| | | newMat.setMatnr(mesMatInfo.getItem_no()); |
| | | newMat.setMaktx(mesMatInfo.getDescription()); |
| | | newMat.setTagId(tagId); |
| | | newMat.setLocType(tagId); //locType |
| | | newMat.setSpecs(mesMatInfo.getSpecification()); |
| | | newMat.setUnit(mesMatInfo.getUnit_of_measure()); |
| | | newMat.setModel(mesMatInfo.getClassification_code()); |
| | | // newMat.setMemo(JSONObject.toJSONString(mesMatInfo)); |
| | | newMat.setCreateBy(userId); |
| | | newMat.setCreateTime(now); |
| | | newMat.setUpdateBy(userId); |
| | | newMat.setUpdateTime(now); |
| | | newMat.setStatus(1); |
| | | matService.insert(newMat); |
| | | } else { |
| | | JSONObject dbMemo = JSONObject.parseObject(mat.getMemo()); |
| | | // dbMemo.remove("OrderNo"); |
| | | // dbMemo.remove("qty"); |
| | | JSONObject newMemo = JSONObject.parseObject(newMat.getMemo()); |
| | | // newMemo.remove("OrderNo"); |
| | | // newMemo.remove("qty"); |
| | | if (!dbMemo.equals(newMemo)) { |
| | | newMat.setId(mat.getId()); |
| | | if (!matService.updateById(newMat)) |
| | | return -2; |
| | | } |
| | | mat.setMaktx(mesMatInfo.getDescription()); |
| | | mat.setSpecs(mesMatInfo.getSpecification()); |
| | | mat.setUnit(mesMatInfo.getUnit_of_measure()); |
| | | mat.setModel(mesMatInfo.getClassification_code()); |
| | | mat.setUpdateTime(now); |
| | | matService.updateById(mat); |
| | | } |
| | | |
| | | return 1; |
| | |
| | | return 0; |
| | | } |
| | | |
| | | @Resource |
| | | private BasStationService basStationService; |
| | | |
| | | /** |
| | | * 出库申请 |
| | | * 加工库、刀具库 |
| | |
| | | * @param mesOutApply |
| | | * @return 1 成功;-1 订单重复; |
| | | */ |
| | | public int outBoundOrder(MesInApply mesOutApply){ |
| | | @Transactional |
| | | public MesReturn outBoundOrder(MesInApply mesOutApply) { |
| | | MesReturn mesReturn = new MesReturn(); |
| | | // 终点为空,计算接驳位 |
| | | BasStation basStation = null; |
| | | if (Cools.isEmpty(mesOutApply.getNextStationId())) { |
| | | // 1.连杆线,2.螺杆线 |
| | | int productionLine = mesOutApply.getStationId().startsWith("LL") ? 1 : 2; |
| | | List<BasStation> basStations = basStationService.selectList(new EntityWrapper<BasStation>().eq("loc_sts", "O").eq("area_id",productionLine)); |
| | | if (basStations.isEmpty()) { |
| | | mesReturn.setSuccess("2"); |
| | | mesReturn.setMessage("无空接驳位,请稍后再试!"); |
| | | return mesReturn; |
| | | } |
| | | // 接驳点 |
| | | basStation = basStations.get(0); |
| | | mesOutApply.setNextStationId(basStation.getDevNo()); |
| | | } |
| | | |
| | | // docType根据库类型确定 |
| | | long docType = 7; |
| | | long docType = Long.parseLong(mesOutApply.getBillType()); |
| | | long settle = 1; |
| | | |
| | | // 校验订单是否重复 |
| | | OrderPakout order = orderPakoutService.selectByNo(mesOutApply.getOrderNo()); |
| | | if (order != null && !StringUtils.isEmpty(order.getOrderNo())) { |
| | | return -1; |
| | | mesReturn.setSuccess("2"); |
| | | mesReturn.setMessage("orderNo重复:" + mesOutApply.getOrderNo()); |
| | | return mesReturn; |
| | | } |
| | | |
| | | // 生成订单 |
| | | Date now = new Date(); |
| | | OrderPakout orderPakout = new OrderPakout(); |
| | | orderPakout.setUuid( String.valueOf(snowflakeIdWorker.nextId())); |
| | | orderPakout.setUuid(String.valueOf(snowflakeIdWorker.nextId())); |
| | | orderPakout.setOrderNo(mesOutApply.getOrderNo()); |
| | | orderPakout.setOrderTime(com.core.common.DateUtils.convert(now)); |
| | | orderPakout.setDocType(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.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.setItemno(mesOutApply.getItemNo()); |
| | | transTask.setQty(0); |
| | | transTask.setProductLineId(mesOutApply.getProductLineId()); |
| | | // transTask.setItemBarcode(codes); |
| | | // transTask.setTuoPanId(entry.getKey()); |
| | | transTask.setOperateType(1); |
| | | transTask.setAgvFactory(1); |
| | | JSONObject sendAgvTask = submitTask(transTask); |
| | | if (!"1".equals(sendAgvTask.getString("Success"))) { |
| | | 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()); |
| | | // } |
| | | // |
| | | // |
| | | // } |
| | | // } |
| | | TransTask transTask = new TransTask(); |
| | | transTask.setTaskno(mesOutApply.getTaskNo()); |
| | | transTask.setTaskname(mesOutApply.getTaskname()); |
| | | transTask.setOrderNo(mesOutApply.getOrderNo()); |
| | | transTask.setTransType("02"); //运回刀架时默认02(下空托) mesOutApply.getTransType() |
| | | transTask.setCurProcess(mesOutApply.getProductLineId()); |
| | | transTask.setCurStationId(mesOutApply.getStationId()); |
| | | transTask.setNextProcess(mesOutApply.getProductLineId()); |
| | | transTask.setNextStationId(mesOutApply.getNextStationId()); |
| | | transTask.setQty(1); |
| | | transTask.setProductLineId(mesOutApply.getProductLineId()); |
| | | transTask.setDjNo(mesOutApply.getDjNo()); |
| | | transTask.setOperateType(1); |
| | | transTask.setAgvFactory(1); |
| | | JSONObject sendAgvTask = submitTask(transTask); |
| | | if ("1".equals(sendAgvTask.getString("Success"))) { |
| | | // 新接驳点状态 |
| | | if (basStation != null) { |
| | | basStation.setModiTime(new Date()); |
| | | basStation.setLocSts("S"); |
| | | basStation.setBarcode(mesOutApply.getDjNo()); |
| | | basStationService.updateById(basStation); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("下发AGV运输任务失败", e); |
| | | |
| | | mesReturn.setSuccess("1"); |
| | | mesReturn.setMessage("订单下发成功,agv开始运输:" + transTask.getTaskno()); |
| | | return mesReturn; |
| | | } else { |
| | | log.error("出库下发agv运输任务失败:{}", JSONObject.toJSONString(transTask)); |
| | | throw new CoolException("出库下发agv运输任务失败"); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | public int transDj(String taskNo,String djNo) { |
| | | try { |
| | | EntityWrapper<Task> wapper = new EntityWrapper<>(); |
| | | wapper.eq("task_no", taskNo).orderBy("wrk_date"); |
| | | Task task = taskService.selectOne(wapper); |
| | | if (task != null) { |
| | | JSONObject memo = JSONObject.parseObject(task.getMemo()); |
| | | |
| | | TransTask transTask = new TransTask(); |
| | | transTask.setTaskno(taskNo + "_1"); |
| | | // transTask.setTaskname(mesOutApply.getTaskname()); |
| | | transTask.setOrderNo(memo.getString("OrderNo")); |
| | | transTask.setTransType("05"); //送刀时默认05(上刀) |
| | | transTask.setCurStationId(WMS_TRANS_START_STATION_1); |
| | | transTask.setNextProcess(memo.getString("ProductLineId")); |
| | | transTask.setNextStationId(memo.getString("CurStationId")); |
| | | // transTask.setItemno(mesOutApply.getItemNo()); |
| | | // transTask.setQty(0); |
| | | transTask.setProductLineId(memo.getString("ProductLineId")); |
| | | // transTask.setItemBarcode(codes); |
| | | // transTask.setTuoPanId(entry.getKey()); |
| | | transTask.setOperateType(1); |
| | | transTask.setAgvFactory(1); |
| | | transTask.setDjNo(djNo); |
| | | JSONObject sendAgvTask = submitTask(transTask); |
| | | if (!"1".equals(sendAgvTask.getString("Success"))) { |
| | | log.error("上刀下发agv运输任务失败", JSONObject.toJSONString(transTask)); |
| | | } |
| | | } |
| | | } 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:是否绑定货物和托盘? |
| | |
| | | |
| | | /** |
| | | * 9.1下发运输任务 |
| | | * TODO:其他库的任务全部转到滑块库统一调度 |
| | | * |
| | | * @param transTask |
| | | * @return |
| | |
| | | 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(); |
| | | // 模板名 |
| | | if(transTask.getCurStationId().startsWith("LL") || transTask.getCurStationId().startsWith("LG")) { // 起点产线 |
| | | rcsTaskSubmit.setTaskType("DJ1"); |
| | | } else if(transTask.getNextStationId().startsWith("LL") || transTask.getNextStationId().startsWith("LG")) { // 终点产线 |
| | | rcsTaskSubmit.setTaskType("DJ2"); |
| | | } |
| | | 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; |
| | |
| | | return 0; |
| | | } |
| | | |
| | | @Override |
| | | public R tkt(String taskNo) { |
| | | boolean flag = false; |
| | | try { |
| | | EntityWrapper<Task> wapper = new EntityWrapper<>(); |
| | | wapper.eq("task_no", taskNo).orderBy("wrk_date",false); |
| | | Task task = taskService.selectOne(wapper); |
| | | // 下发给RCS |
| | | RcsTaskSubmit rcsTaskSubmit = new RcsTaskSubmit(); |
| | | rcsTaskSubmit.setRobotTaskCode(taskNo + "-1"); |
| | | rcsTaskSubmit.setInitPriority(10); //默认10 |
| | | List<RcsTaskTargetRoute> targetRouteList = new ArrayList<>(); |
| | | RcsTaskTargetRoute startRoute = new RcsTaskTargetRoute(); |
| | | startRoute.setSeq(0); |
| | | startRoute.setCode(task.getStaNo()); |
| | | startRoute.setOperation("COLLECT"); |
| | | targetRouteList.add(startRoute); |
| | | RcsTaskTargetRoute endRoute = new RcsTaskTargetRoute(); |
| | | endRoute.setSeq(1); |
| | | endRoute.setCode(task.getSourceStaNo()); |
| | | endRoute.setOperation("DELIVERY"); |
| | | targetRouteList.add(endRoute); |
| | | rcsTaskSubmit.setTargetRoute(targetRouteList); |
| | | // 更新起点和终点 |
| | | String memo = task.getMemo(); |
| | | TransTask transTask = JSONObject.parseObject(memo, TransTask.class); |
| | | transTask.setCurStationId(task.getSourceStaNo()); |
| | | transTask.setNextStationId(task.getStaNo()); |
| | | transTask.setTransType("01"); // 下空托 |
| | | // 更新agv任务起点和终点 |
| | | task.setTaskNo(taskNo + "-1"); |
| | | task.setSourceStaNo(transTask.getCurStationId()); |
| | | task.setStaNo(transTask.getNextStationId()); |
| | | task.setMemo(JSONObject.toJSONString(transTask)); |
| | | taskService.updateById(task); |
| | | // 转发给海康或华晓RCS |
| | | int success = rcsService.submitTask(rcsTaskSubmit, transTask.getAgvFactory()); |
| | | @Resource |
| | | private LocDetlService locDetlService; |
| | | |
| | | if (success == 1) { |
| | | flag = true; |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("空托回产线发AGV运输任务失败", e); |
| | | @Resource |
| | | private LocMastService locMastService; |
| | | |
| | | @Override |
| | | public R queryStock(String matnr) { |
| | | List<LocDetl> locDetls; |
| | | if (Cools.isEmpty(matnr)) { |
| | | locDetls = locDetlService.selectList(new EntityWrapper<>()); |
| | | } else { |
| | | locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("matnr",matnr)); |
| | | } |
| | | |
| | | return flag ?R.ok() : R.parse("空托回产线呼叫agv失败"); |
| | | List<String> locNoList = locDetls.stream().map(LocDetl::getLocNo).distinct().collect(Collectors.toList()); |
| | | List<DtLocDetailVo> dtLocDetailVoList = new ArrayList<>(); |
| | | for (String locNo: locNoList) { |
| | | |
| | | LocMast locMast = locMastService.selectById(locNo); |
| | | DtLocDetailVo dtLocDetailVo = new DtLocDetailVo(); |
| | | dtLocDetailVo.setLocNo(locNo); |
| | | dtLocDetailVo.setLocSts(locMast.getLocSts()); |
| | | dtLocDetailVo.setRow1(locMast.getRow1()); |
| | | dtLocDetailVo.setBay1(locMast.getBay1()); |
| | | dtLocDetailVo.setLev1(locMast.getLev1()); |
| | | |
| | | List<LocDetl> locDetlList2 = locDetls.parallelStream().filter(o-> o.getLocNo().equals(locNo)).collect(Collectors.toList()); |
| | | List<StockDetl> stockDetls = new ArrayList<>(); |
| | | for(LocDetl locDetl:locDetlList2) { |
| | | StockDetl stockDetl = new StockDetl(); |
| | | stockDetl.setMatnr(locDetl.getMatnr()); |
| | | stockDetl.setMaktx(locDetl.getMaktx()); |
| | | stockDetl.setAnfme(locDetl.getAnfme()); |
| | | stockDetls.add(stockDetl); |
| | | } |
| | | dtLocDetailVo.setLocDetl(stockDetls); |
| | | dtLocDetailVoList.add(dtLocDetailVo); |
| | | } |
| | | |
| | | return R.ok(dtLocDetailVoList); |
| | | } |
| | | |
| | | // endregion |
| | |
| | | */ |
| | | private int checkRcsFactory(String agvNo) { |
| | | |
| | | AgvInfo agvInfo = agvInfoMapper.selectById(agvNo); |
| | | return agvInfo.getAgvFactory(); |
| | | // AgvInfo agvInfo = agvInfoMapper.selectById(agvNo); |
| | | // return agvInfo.getAgvFactory(); |
| | | return 1; |
| | | } |
| | | |
| | | } |