|  |  | 
 |  |  | import com.core.common.BaseRes; | 
 |  |  | import com.core.common.Cools; | 
 |  |  | import com.core.common.R; | 
 |  |  | import com.core.common.SpringUtils; | 
 |  |  | import com.core.exception.CoolException; | 
 |  |  | import com.zy.asrs.entity.*; | 
 |  |  | import com.zy.asrs.entity.param.*; | 
 |  |  | import com.zy.asrs.service.*; | 
 |  |  | import com.zy.asrs.service.impl.BasCrnErrorServiceImpl; | 
 |  |  | import com.zy.asrs.service.impl.TaskWrkLogServiceImpl; | 
 |  |  | import com.zy.asrs.utils.Utils; | 
 |  |  | import com.zy.common.web.BaseController; | 
 |  |  | import com.zy.core.CrnThread; | 
 |  |  | 
 |  |  |     public static final ArrayList<String> APP_KEY_LIST = new ArrayList<String>() {{ | 
 |  |  |         add("ea1f0459efc02a79f046f982767939ae"); | 
 |  |  |     }}; | 
 |  |  |     @Autowired | 
 |  |  |     private TaskWrkLogServiceImpl taskWrkLogService; | 
 |  |  |  | 
 |  |  |     //agv任务完成 | 
 |  |  |     @PostMapping("/toAgvTaskOver") | 
 |  |  | 
 |  |  |     public R outboundTaskSend(@RequestHeader String appkey, | 
 |  |  |                               @RequestBody List<CarryParam> params,//中航下发  1:出库,2:移库 3:入库 | 
 |  |  |                               HttpServletRequest request) { | 
 |  |  |  | 
 |  |  |         try{ | 
 |  |  |             DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |             deviceErrorService.addDeviceError("wms/taskCreate", 1, "wms任务下发,任务数:"+params.size()); | 
 |  |  |         } catch (Exception e2){ | 
 |  |  | //                    log.error("e2:"+e2.getMessage()); | 
 |  |  |         } | 
 |  |  |         auth(appkey, params, request); | 
 |  |  | //        List<WMSAndAGVInterfaceParam> params1 =new ArrayList<>(); | 
 |  |  |         for (CarryParam param:params){ | 
 |  |  |             param.updateIoTyoe(param.getIoType());//中航下发  1:出库,2:移库 3:入库   ====转换为====>  1:入库,2:出库,3:移库 | 
 |  |  |             param.updateLocNo(); | 
 |  |  |             if (Cools.isEmpty(param)){ | 
 |  |  |                 try{ | 
 |  |  |                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                     deviceErrorService.addDeviceError("wmsErr", 1, "参数为空,param:"+JSON.toJSONString(param)); | 
 |  |  |                 } catch (Exception e2){ | 
 |  |  | //                    log.error("e2:"+e2.getMessage()); | 
 |  |  |                 } | 
 |  |  |                 return R.error("参数为空!"); | 
 |  |  |             } else if (Cools.isEmpty(param.getTaskNo())){ | 
 |  |  |                 try{ | 
 |  |  |                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                     deviceErrorService.addDeviceError("wmsErr", 1, "任务号为空,taskNo:"+JSON.toJSONString(param)); | 
 |  |  |                 } catch (Exception e2){ | 
 |  |  | //                    log.error("e2:"+e2.getMessage()); | 
 |  |  |                 } | 
 |  |  |                 return R.error("任务号为空!"); | 
 |  |  |             } else if (Cools.isEmpty(param.getIoType())){ | 
 |  |  |                 try{ | 
 |  |  |                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                     deviceErrorService.addDeviceError("wmsErr", 1, "任务类型为空,ioType:"+JSON.toJSONString(param)); | 
 |  |  |                 } catch (Exception e2){ | 
 |  |  | //                    log.error("e2:"+e2.getMessage()); | 
 |  |  |                 } | 
 |  |  |                 return R.error("任务类型为空!"); | 
 |  |  |             } | 
 |  |  |             if (Cools.isEmpty(param.getStartPoint()) || Cools.isEmpty(param.getTargetPoint())){ | 
 |  |  |                 try{ | 
 |  |  |                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                     deviceErrorService.addDeviceError("wmsErr", 1, "初始目标或者目标位为空,Point:"+JSON.toJSONString(param)); | 
 |  |  |                 } catch (Exception e2){ | 
 |  |  | //                    log.error("e2:"+e2.getMessage()); | 
 |  |  |                 } | 
 |  |  |                 return R.error("初始目标或者目标位为空"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             param.updateIoTyoe(param.getIoType());//中航下发  1:出库,2:移库 3:入库   ====转换为====>  1:入库,2:出库,3:移库 | 
 |  |  |             param.updateLocNo(); | 
 |  |  | //            if (Cools.isEmpty(param.getContainerCode())){ | 
 |  |  | //                return R.error("容器编码(托盘码)为空!"); | 
 |  |  | //            } | 
 |  |  | 
 |  |  |             } | 
 |  |  |             LocMast locMast = locMastService.selectByLocNo(locNo); | 
 |  |  |             if(Cools.isEmpty(locMast)){ | 
 |  |  |                 try{ | 
 |  |  |                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                     deviceErrorService.addDeviceError("wmsErr", 1, "初始库位无法找到,locNo:"+JSON.toJSONString(locNo)); | 
 |  |  |                 } catch (Exception e2){ | 
 |  |  | //                    log.error("e2:"+e2.getMessage()); | 
 |  |  |                 } | 
 |  |  |                 return R.error("初始库位无法找到"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  | 
 |  |  |                         .eq("crn_no",locMast.getCrnNo()) | 
 |  |  |                         .eq("stn_no",param.getStartPoint())); | 
 |  |  |                 if(Cools.isEmpty(staDesc)){ | 
 |  |  |                     try{ | 
 |  |  |                         DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                         deviceErrorService.addDeviceError("wmsErr", 1, "入库路劲不存在,param:"+JSON.toJSONString(param)); | 
 |  |  |                     } catch (Exception e2){ | 
 |  |  | //                    log.error("e2:"+e2.getMessage()); | 
 |  |  |                     } | 
 |  |  |                     return R.error("入库路劲不存在"); | 
 |  |  |                 } | 
 |  |  |                 r = openService.taskCreate(new TaskCreateParam(param,staDesc.getCrnNo(),staDesc.getCrnStn())); | 
 |  |  | 
 |  |  |                         .eq("crn_no",locMast.getCrnNo()) | 
 |  |  |                         .eq("stn_no",param.getTargetPoint())); | 
 |  |  |                 if(Cools.isEmpty(staDesc)){ | 
 |  |  |                     try{ | 
 |  |  |                         DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                         deviceErrorService.addDeviceError("wmsErr", 1, "出库路劲不存在,param:"+JSON.toJSONString(param)); | 
 |  |  |                     } catch (Exception e2){ | 
 |  |  | //                    log.error("e2:"+e2.getMessage()); | 
 |  |  |                     } | 
 |  |  |                     return R.error("出库路劲不存在"); | 
 |  |  |                 } | 
 |  |  |                 r = openService.taskCreate(new TaskCreateParam(param,staDesc.getCrnNo(),staDesc.getStnNo())); | 
 |  |  |             }else if (param.getIoType() == 3){ | 
 |  |  |                 LocMast locMast2 = locMastService.selectByLocNo(param.getTargetPoint()); | 
 |  |  |                 if(Cools.isEmpty(locMast2)){ | 
 |  |  |                     try{ | 
 |  |  |                         DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                         deviceErrorService.addDeviceError("wmsErr", 1, "目标库位无法找到,locNo:"+JSON.toJSONString(param.getTargetPoint())); | 
 |  |  |                     } catch (Exception e2){ | 
 |  |  | //                    log.error("e2:"+e2.getMessage()); | 
 |  |  |                     } | 
 |  |  |                     return R.error("目标库位无法找到"); | 
 |  |  |                 } | 
 |  |  |                 if (!locMast2.getCrnNo().equals(locMast.getCrnNo())){ | 
 |  |  |                     try{ | 
 |  |  |                         DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                         deviceErrorService.addDeviceError("wmsErr", 1, "起始库位与目标库位不再同一巷道,param:"+JSON.toJSONString(param)); | 
 |  |  |                     } catch (Exception e2){ | 
 |  |  | //                    log.error("e2:"+e2.getMessage()); | 
 |  |  |                     } | 
 |  |  |                     return R.error("起始库位与目标库位不再同一巷道"); | 
 |  |  |                 } | 
 |  |  |                 //移库任务创建 | 
 |  |  | 
 |  |  |             basCrnpWmsParam.sync(basCrnp); | 
 |  |  |  | 
 |  |  |             basCrnpWmsParam.setCrnNoH(crnProtocol.getLaneNo()); | 
 |  |  |             basCrnpWmsParam.setCrnSts(crnProtocol.getStatus().intValue()); | 
 |  |  |  | 
 |  |  |             try{ | 
 |  |  |                 BasCrnError basCrnError = basCrnErrorService.selectById(basCrnp.getCrnErr()); | 
 |  |  |                 basCrnpWmsParam.setCrnErrM(basCrnError.getErrName()); | 
 |  |  |             } catch (Exception e){ | 
 |  |  |                 basCrnpWmsParam.setCrnErrM("未知异常"); | 
 |  |  |             } | 
 |  |  |             if (crnProtocol.getMode()!=3){ | 
 |  |  |                 basCrnpWmsParam.setCrnErr(999L); | 
 |  |  |                 basCrnpWmsParam.setCrnErrM("非自动!!!"); | 
 |  |  |             } | 
 |  |  |             basCrnpWmsParamList.add(basCrnpWmsParam); | 
 |  |  |  | 
 |  |  | //            list.add(basCrnpWmsParam); | 
 |  |  |         } | 
 |  |  |         wcsStatusResponseModel.setPilingCarList(basCrnpWmsParamList); | 
 |  |  |         for (RgvSlave rgvSlave : slaveProperties.getRgv()) { | 
 |  |  |             RgvProtocol rgvStatus = RgvStatusCache.getRgvStatus(rgvSlave.getId()); | 
 |  |  |             if (Cools.isEmpty(rgvStatus)){ | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |             BasRgvWmsParam basRgvWmsParam = new BasRgvWmsParam(); | 
 |  |  |             basRgvWmsParam.setWrkNo(rgvStatus.getTaskNo()); | 
 |  |  |             basRgvWmsParam.setCrnSts(rgvStatus.getStatus().intValue()); | 
 |  |  |             basRgvWmsParam.setStatusType(rgvStatus.getStatusType().desc); | 
 |  |  |             basRgvWmsParam.setSteNo(rgvSlave.getId()); | 
 |  |  |             basRgvWmsParam.setSteErr(rgvStatus.getAlarm().longValue()); | 
 |  |  |             try{ | 
 |  |  |                 BasRgvErr basRgvErr = basRgvErrService.selectById((long)rgvStatus.getAlarm$()); | 
 |  |  |  | 
 |  |  |                 basRgvWmsParam.setSteErrM(basRgvErr.getErrName()); | 
 |  |  |             } catch (Exception e){ | 
 |  |  |                 basRgvWmsParam.setSteErrM("未知异常"); | 
 |  |  |             } | 
 |  |  |             if (rgvStatus.getMode()!=1){ | 
 |  |  |                 basRgvWmsParam.setSteErr(999L); | 
 |  |  |                 basRgvWmsParam.setSteErrM("非自动!!!"); | 
 |  |  |             } | 
 |  |  | //            list.add(basRgvWmsParam); | 
 |  |  |             wcsStatusResponseModel.getRgvList().add(basRgvWmsParam); | 
 |  |  |  | 
 |  |  |         } | 
 |  |  | //        List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<>()); | 
 |  |  | //        for (BasCrnp basCrnp:basCrnps){ | 
 |  |  | //            list.add(basCrnp); | 
 |  |  | //        } | 
 |  |  |         return R.ok(wcsStatusResponseModel); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     //设备状态查询接口 | 
 |  |  |     @PostMapping("/errorRgv1") | 
 |  |  |     @Transactional | 
 |  |  |     public R errorRgv(@RequestHeader String appkey, | 
 |  |  |                           HttpServletRequest request) { | 
 |  |  |         auth(appkey, "设备状态查询接口", request); | 
 |  |  |         List<BasDevp> basDevps = basDevpService.selectList(new EntityWrapper<>()); | 
 |  |  |         List<Object> list = new ArrayList<>(); | 
 |  |  |         WcsStatusResponseModel wcsStatusResponseModel = new WcsStatusResponseModel(); | 
 |  |  |         for (BasDevp basDevp:basDevps){ | 
 |  |  |             BasDevpWmsParam basDevpWmsParam = new BasDevpWmsParam(); | 
 |  |  |             basDevpWmsParam.setDevNo(basDevp.getDevNo()); | 
 |  |  |             basDevpWmsParam.setWrkNo(basDevp.getWrkNo().longValue()); | 
 |  |  |             basDevpWmsParam.setAutoing(basDevp.getAutoing()); | 
 |  |  |             basDevpWmsParam.setLoading(basDevp.getLoading()); | 
 |  |  |             basDevpWmsParam.setInEnable(basDevp.getInEnable()); | 
 |  |  |             basDevpWmsParam.setOutEnable(basDevp.getOutEnable()); | 
 |  |  |             basDevpWmsParam.setDevErr(basDevp.getStaErr().longValue()); | 
 |  |  |             basDevpWmsParam.setDevErrM(basDevpWmsParam.getDevErr$()); | 
 |  |  | //            list.add(basDevpWmsParam); | 
 |  |  |             wcsStatusResponseModel.getChainList().add(basDevpWmsParam); | 
 |  |  |         } | 
 |  |  |         List<BasCrnpWmsParam> basCrnpWmsParamList = new ArrayList<>(); | 
 |  |  |         for (CrnSlave crn : slaveProperties.getCrn()) { | 
 |  |  |             // 获取堆垛机信息 | 
 |  |  |             CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); | 
 |  |  |             CrnProtocol crnProtocol = crnThread.getCrnProtocol(); | 
 |  |  |             if (crnProtocol == null) { continue; } | 
 |  |  |             BasCrnp basCrnp = basCrnpService.selectById(crn.getId()); | 
 |  |  |             if (basCrnp == null) { | 
 |  |  |                 log.error("{}号堆垛机尚未在数据库进行维护!", crn.getId()); | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |             BasCrnpWmsParam basCrnpWmsParam = new BasCrnpWmsParam(); | 
 |  |  |             basCrnpWmsParam.sync(basCrnp); | 
 |  |  |  | 
 |  |  |             basCrnpWmsParam.setCrnNoH(crnProtocol.getLaneNo()); | 
 |  |  |  | 
 |  |  |             try{ | 
 |  |  |                 BasCrnError basCrnError = basCrnErrorService.selectById(basCrnp.getCrnErr()); | 
 |  |  |                 BasCrnError basCrnError = basCrnErrorService.selectById(crnProtocol.getAlarm()); | 
 |  |  |                 basCrnpWmsParam.setCrnErrM(basCrnError.getErrName()); | 
 |  |  |             } catch (Exception e){ | 
 |  |  |                 basCrnpWmsParam.setCrnErrM("未知异常"); | 
 |  |  | 
 |  |  |             basRgvWmsParam.setSteNo(rgvSlave.getId()); | 
 |  |  |             basRgvWmsParam.setSteErr(rgvStatus.getAlarm().longValue()); | 
 |  |  |             basRgvWmsParam.setSteErrM(rgvStatus.getAlarmM()); | 
 |  |  |             try{ | 
 |  |  | //            try{ | 
 |  |  | //                BasRgvErr basRgvErr = basRgvErrService.selectById((long)rgvStatus.getAlarm$()); | 
 |  |  |  | 
 |  |  | // | 
 |  |  | //                basRgvWmsParam.setSteErrM(basRgvErr.getErrName()); | 
 |  |  |             } catch (Exception e){ | 
 |  |  |                 basRgvWmsParam.setSteErrM("未知异常"); | 
 |  |  |             } | 
 |  |  | //            } catch (Exception e){ | 
 |  |  | //                basRgvWmsParam.setSteErrM("未知异常"); | 
 |  |  | //            } | 
 |  |  |             if (rgvStatus.getMode()!=1){ | 
 |  |  |                 basRgvWmsParam.setSteErr(999L); | 
 |  |  |                 basRgvWmsParam.setSteErrM("非自动!!!"); | 
 |  |  | 
 |  |  |         return R.ok(wcsStatusResponseModel); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     //设备状态查询接口 | 
 |  |  |     @PostMapping("/taskWrkLogs") | 
 |  |  |     @Transactional | 
 |  |  |     public R taskWrkLogs(@RequestHeader String appkey, | 
 |  |  |                           HttpServletRequest request) { | 
 |  |  |         List<TaskWrkLog> taskWrkLogs = taskWrkLogService.selectList(new EntityWrapper<>()); | 
 |  |  |         return R.ok(taskWrkLogs); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     //设备状态查询接口 | 
 |  |  |     @PostMapping("/error") | 
 |  |  |     @Transactional | 
 |  |  |     public R errorRgv(@RequestHeader String appkey, | 
 |  |  |                       HttpServletRequest request) { | 
 |  |  |         List<TaskWrkLog> taskWrkLogs = taskWrkLogService.selectList(new EntityWrapper<>()); | 
 |  |  |         return R.ok(taskWrkLogs); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     //设备状态查询接口 | 
 |  |  |     @PostMapping("/wrkNo/wmsTaskNo") | 
 |  |  |     @Transactional | 
 |  |  |     public R wrkNoWmsTaskNo(@RequestHeader String appkey, | 
 |  |  |                       HttpServletRequest request) { | 
 |  |  |         List<TaskWrkLog> taskWrkLogs = taskWrkLogService.selectList(new EntityWrapper<>()); | 
 |  |  |         return R.ok(taskWrkLogs); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  | } |