| | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.AgvLocDetl; |
| | | import com.zy.asrs.entity.AgvWaitPakin; |
| | | import com.zy.asrs.entity.AgvWrkDetl; |
| | | import com.zy.asrs.entity.AgvWrkMast; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | |
| | | private OrderService orderService; |
| | | @Autowired |
| | | private AgvBasDevpService agvBasDevpService; |
| | | @Autowired |
| | | private AgvWorkService agvWorkService; |
| | | |
| | | @Transactional |
| | | public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) { |
| | |
| | | //修改工作档状态为207.库存更新完成 |
| | | agvWrkMast.setWrkSts(207L); |
| | | agvWrkMastService.updateById(agvWrkMast); |
| | | if(agvWrkMast.getIoType() == 10){ |
| | | // 空板入库 设置库位状态为D.空桶/空栈板 |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode()); |
| | | }else{ |
| | | //修改目标库位状态为F.在库 |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode()); |
| | | } |
| | | // 空板入库 设置库位状态为D.空桶/空栈板 |
| | | String locSts = agvWrkMast.getIoType() == 10 ? "D" : "F"; |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),locSts,agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | //生成AGV工作历史档 |
| | | agvWrkMastLogService.save(agvWrkMast); |
| | | //生成AGV工作明细历史档 |
| | |
| | | //更新库存明细 |
| | | agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo()); |
| | | //修改源库位状态为O |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O",""); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null); |
| | | } |
| | | |
| | | //删除AGV工作档 |
| | |
| | | agvWrkMast.setWrkSts(207L); |
| | | agvWrkMastService.updateById(agvWrkMast); |
| | | //修改源库位状态为O |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O",""); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null); |
| | | if(agvWrkMast.getIoType() == 101){ |
| | | //更新目标库位明细 101.出库 删除源库位库存明细 |
| | | agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo())); |
| | | //生成空板入库任务 |
| | | Short containerType = Short.valueOf(agvWrkMast.getBarcode().substring(0, 2)); |
| | | try { |
| | | agvWorkService.emptyPlateIn(agvWrkMast.getLocNo(),agvWrkMast.getBarcode(),containerType,9527L,true); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | log.error(e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | //生成AGV工作历史档 |
| | |
| | | } |
| | | |
| | | @Transactional |
| | | public ReturnT<String> startPutWayWrk(List<AgvWrkMast> agvWrkMastList) throws IOException { |
| | | @Synchronized |
| | | public ReturnT<String> startPutWayWrk(AgvWrkMast agvWrkMast) throws IOException { |
| | | |
| | | //下发任务 |
| | | int startWrkCode = agvWrkMastService.startWrk(agvWrkMastList,"putaway"); |
| | | int startWrkCode = agvWrkMastService.startWrk(agvWrkMast); |
| | | if(startWrkCode != 0){ |
| | | throw new CoolException("任务下发失败"); |
| | | } |
| | | |
| | | //下发容器入场指令 (缓存货架) |
| | | int code = agvWrkMastService.containerMoveIn(agvWrkMastList); |
| | | |
| | | if(code == 0){ |
| | | for(AgvWrkMast agvWrkMast : agvWrkMastList){ |
| | | //下发容器达到通知 (输送线) |
| | | if("Y".equals(agvWrkMast.getMk())){ |
| | | int containerArrivedCode = agvWrkMastService.containerArrived(agvWrkMast); |
| | | if(containerArrivedCode != 0){ |
| | | log.error("容器到达指令下发失败"); |
| | | continue; |
| | | } |
| | | } |
| | | //202.RCS取货中 |
| | | agvWrkMast.setWrkSts(202L); |
| | | agvWrkMastService.updateById(agvWrkMast); |
| | | if(agvWrkMast.getIoType() == 1){ |
| | | //修改AGV入库通知档状态入出状态为Y |
| | | agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y"); |
| | | } |
| | | } |
| | | return SUCCESS; |
| | | agvWrkMast.setWrkSts(202L); |
| | | agvWrkMastService.updateById(agvWrkMast); |
| | | if(agvWrkMast.getIoType() == 1){ |
| | | //修改AGV入库通知档状态入出状态为Y |
| | | agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y"); |
| | | } |
| | | return FAIL; |
| | | return SUCCESS; |
| | | |
| | | } |
| | | |
| | | @Transactional |
| | | public ReturnT<String> startCarryWrk(List<AgvWrkMast> agvWrkMastList) throws IOException { |
| | | //log.info(agvWrkMastList.toString()); |
| | | //任务过滤,过滤掉已存在相同目标库位的工作档 |
| | | //agvWrkMastList = filter(agvWrkMastList); |
| | | int code = agvWrkMastService.startWrk(agvWrkMastList,"carry"); |
| | | //log.info(agvWrkMastList.toString()); |
| | | if (Cools.isEmpty(agvWrkMastList)){ |
| | | return SUCCESS; |
| | | } |
| | | if(code == 0){ |
| | | agvWrkMastList.forEach(agvWrkMast -> { |
| | | //202.RCS取货中 |
| | | agvWrkMast.setWrkSts(202L); |
| | | agvWrkMastService.updateById(agvWrkMast); |
| | | }); |
| | | //agvWrkMastService.updateBatchById(agvWrkMastList); |
| | | |
| | | return SUCCESS; |
| | | } |
| | | |
| | | return FAIL; |
| | | } |
| | | // @Transactional |
| | | // public ReturnT<String> startCarryWrk(AgvWrkMast agvWrkMast) throws IOException { |
| | | // //log.info(agvWrkMastList.toString()); |
| | | // //任务过滤,过滤掉已存在相同目标库位的工作档 |
| | | // //agvWrkMastList = filter(agvWrkMastList); |
| | | // int code = agvWrkMastService.startWrk(agvWrkMast); |
| | | // //log.info(agvWrkMastList.toString()); |
| | | // if (Cools.isEmpty(agvWrkMastList)){ |
| | | // return SUCCESS; |
| | | // } |
| | | // if(code == 0){ |
| | | // agvWrkMastList.forEach(agvWrkMast -> { |
| | | // //202.RCS取货中 |
| | | // agvWrkMast.setWrkSts(202L); |
| | | // agvWrkMastService.updateById(agvWrkMast); |
| | | // }); |
| | | // //agvWrkMastService.updateBatchById(agvWrkMastList); |
| | | // |
| | | // return SUCCESS; |
| | | // } |
| | | // |
| | | // return FAIL; |
| | | // } |
| | | |
| | | @Synchronized |
| | | @Transactional |
| | |
| | | return SUCCESS; |
| | | } |
| | | |
| | | @Synchronized |
| | | @Transactional |
| | | public ReturnT<String> autoEmptyOut(AgvBasDevp agvBasDevp) { |
| | | |
| | | agvWorkService.emptyPlateOut(agvBasDevp.getDevNo(),0,9527L); |
| | | |
| | | return SUCCESS; |
| | | } |
| | | |
| | | private String getOrderNoByWrkNo(int wrkNo){ |
| | | AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo)); |
| | | if(Cools.isEmpty(agvWrkDetl)){ |