|  |  |  | 
|---|
|  |  |  | import java.lang.reflect.InvocationTargetException; | 
|---|
|  |  |  | import java.lang.reflect.Method; | 
|---|
|  |  |  | import java.util.EnumSet; | 
|---|
|  |  |  | import java.util.Map; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 上报事件类型(eventType): | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | apiLogService.save( | 
|---|
|  |  |  | "ESS任务回调", | 
|---|
|  |  |  | "/tzskwms/agv/task/event/status", | 
|---|
|  |  |  | "/phyzwms/agv/task/event/status", | 
|---|
|  |  |  | null, | 
|---|
|  |  |  | null, | 
|---|
|  |  |  | JSON.toJSONString(JSONObject.toJSONString(param)), | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", wrkNo)); | 
|---|
|  |  |  | if(Cools.isEmpty(agvWrkMast)){ | 
|---|
|  |  |  | return R.error("任务编号错误"); | 
|---|
|  |  |  | agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode",param.getPodCode())); | 
|---|
|  |  |  | if (Cools.isEmpty(agvWrkMast)){ | 
|---|
|  |  |  | return R.error("任务编号错误"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //        if(!checkParam(param,agvWrkMast)){ | 
|---|
|  |  |  | //            return R.error("任务参数与工作档参数不符合"); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | if(agvWrkMast.getWrkSts() >= 205){ | 
|---|
|  |  |  | return R.error("当前任务已完成"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | AgvTask agvTask = AgvTask.valueOf(param.getEventType()); | 
|---|
|  |  |  | AgvTask agvTask = AgvTask.valueOf(param.getMethod()); | 
|---|
|  |  |  | Class<AgvTask> clz = AgvTask.class; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | Method method = clz.getDeclaredMethod(param.getStatus(), AgvWrkMast.class, AgvTaskCallBackParam.class); | 
|---|
|  |  |  | Method method = clz.getDeclaredMethod("success", AgvWrkMast.class, AgvTaskCallBackParam.class); | 
|---|
|  |  |  | method.invoke(agvTask,agvWrkMast,param); | 
|---|
|  |  |  | } catch (NoSuchMethodException e) { | 
|---|
|  |  |  | return R.error("任务状态status参数有误"); | 
|---|
|  |  |  | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private boolean checkParam(AgvTaskCallBackParam param, AgvWrkMast agvWrkMast){ | 
|---|
|  |  |  | if(!agvWrkMast.getLocNo().equals(param.getLocationCode())){ | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!agvWrkMast.getSourceLocNo().equals(param.getStationCode())){ | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | @PostMapping("/conveyor/loadContainerFinish ") | 
|---|
|  |  |  | @AppAuth(memo = "取容器完成通知") | 
|---|
|  |  |  | public R loadContainerFinish(@RequestBody Map<String,Object> params){ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | enum AgvTask{ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 上报任务状态 | 
|---|
|  |  |  | * 上报任务完成 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | task{ | 
|---|
|  |  |  | end{ | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  | //修改AGV工作档的工作状态为205.工作完成 | 
|---|
|  |  |  | agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),205); | 
|---|
|  |  |  | agvWrkMast.setWrkSts(205L); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //出库任务 101.出库 || 103.拣料出库 || 107.盘点出库 | 
|---|
|  |  |  | if(agvWrkMast.getIoType() == 101 || agvWrkMast.getIoType() == 103 || agvWrkMast.getIoType() == 107){ | 
|---|
|  |  |  | //修改出库站点状态 | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode()); | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //出库任务 110.空板出库 | 
|---|
|  |  |  | if(agvWrkMast.getIoType() == 110){ | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode()); | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | agvWrkMast.setWrkSts(206L); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | agvWrkMastService.updateById(agvWrkMast); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 上报任务分配给机器人 | 
|---|
|  |  |  | * 任务开始 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | task_allocated{ | 
|---|
|  |  |  | start{ | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //修改AGV工作档的工作状态为203.任务开始 | 
|---|
|  |  |  | agvWrkMast.setWrkSts(203L); | 
|---|
|  |  |  | agvWrkMastService.updateById(agvWrkMast); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 上报取箱状态 | 
|---|
|  |  |  | * 走出储位状态 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | tote_load{ | 
|---|
|  |  |  | outbin{ | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //入库任务 || 拣料入库任务 ||盘点再入库 ||空板入库 | 
|---|
|  |  |  | if(agvWrkMast.getIoType() == 1 || agvWrkMast.getIoType() == 53 || agvWrkMast.getIoType() == 57 || agvWrkMast.getIoType() == 10){ | 
|---|
|  |  |  | //修改源站点状态为O.空,以及解绑托盘条码 | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O",""); | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",null); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //修改AGV工作档的工作状态为203.RCS放货中 | 
|---|
|  |  |  | agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),203); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),204); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 上报放箱状态 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | tote_unload{ | 
|---|
|  |  |  | cancel{ | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  | //修改工作档状态为204.放货完成 | 
|---|
|  |  |  | agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),204); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | robot_reach{ | 
|---|
|  |  |  | apply{ | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | weight{ | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | rfid{ | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //任务状态为成功 | 
|---|
|  |  |  | public abstract void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param); | 
|---|
|  |  |  | //任务状态为失败 | 
|---|
|  |  |  | public abstract void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param); | 
|---|
|  |  |  | //任务状态为取消 | 
|---|
|  |  |  | public abstract void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param); | 
|---|
|  |  |  | //任务状态为挂起 | 
|---|
|  |  |  | public abstract void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param); | 
|---|
|  |  |  | //    //任务状态为失败 | 
|---|
|  |  |  | //    public abstract void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param); | 
|---|
|  |  |  | //    //任务状态为取消 | 
|---|
|  |  |  | //    public abstract void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param); | 
|---|
|  |  |  | //    //任务状态为挂起 | 
|---|
|  |  |  | //    public abstract void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Setter | 
|---|
|  |  |  | AgvBasDevpService agvBasDevpService; | 
|---|