| | |
| | | import com.core.common.Cools; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.param.EmptyPlateOutParam; |
| | | import com.zy.asrs.entity.param.StockOutParam; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.common.model.LocDto; |
| | | import com.zy.common.model.OrderDto; |
| | |
| | | @Autowired |
| | | private AgvBasDevpService agvBasDevpService; |
| | | @Autowired |
| | | private AgvLocMastService agvLockMastService; |
| | | private AgvLocMastService agvLocMastService; |
| | | @Autowired |
| | | private AgvLocDetlService agvLocDetlService; |
| | | @Autowired |
| | |
| | | |
| | | agvTaskDtos.forEach(taskDto -> { |
| | | |
| | | AgvLocMast agvLocMast = agvLockMastService.selectById(taskDto.getLocNo()); |
| | | AgvLocMast agvLocMast = agvLocMastService.selectById(taskDto.getLocNo()); |
| | | AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", taskDto.getLocNo())); |
| | | |
| | | //工作档所需参数 |
| | |
| | | modifyOrderDetl(taskDto.getLocDtos().get(0), userId); |
| | | //更新源站点信息 |
| | | String locSts = ioType == 101 ? "R" : "P"; |
| | | updateAgvLocMast(agvLockMastService.selectById(sourceLocNo),locSts); |
| | | updateAgvLocMast(agvLocMastService.selectById(sourceLocNo),locSts); |
| | | //更新目标站点状态 |
| | | //locSts = ioType == 101 ? "S" : "Q"; |
| | | updateAgvBasDevp(agvBasDevpService.selectById(targetLocNo),"S"); |
| | |
| | | agvWrkMastList.forEach(agvWrkMast -> { |
| | | //修改工作党 |
| | | agvWrkMast.setWrkSts(201L); |
| | | agvWrkMast.setIoType(53); |
| | | |
| | | //根据出库类型 设置入库类型 53拣料入库 57盘点入库 |
| | | int ioType = agvWrkMast.getIoType() == 103 ? 53 : 57; |
| | | |
| | | agvWrkMast.setIoType(ioType); |
| | | String locNo = agvWrkMast.getLocNo(); |
| | | agvWrkMast.setLocNo(agvWrkMast.getSourceLocNo()); |
| | | agvWrkMast.setSourceLocNo(locNo); |
| | |
| | | agvWrkMastService.updateById(agvWrkMast); |
| | | |
| | | AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); |
| | | AgvLocMast agvLocMast = agvLockMastService.selectById(agvWrkMast.getLocNo()); |
| | | AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getLocNo()); |
| | | AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocMast.getLocNo())); |
| | | AgvBasDevp agvBasDevp = agvBasDevpService.selectById(agvWrkMast.getSourceLocNo()); |
| | | //修改工作党明细 |
| | | agvWrkDetl.setAnfme(agvLocDetl.getAnfme() - agvWrkDetl.getAnfme()); |
| | | agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("wrk_no",agvWrkDetl.getWrkNo())); |
| | | //修改库存信息 |
| | | agvLocDetl.setAnfme(agvWrkDetl.getAnfme()); |
| | | agvLocDetlService.update(agvLocDetl,new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocDetl.getLocNo())); |
| | | //修改库位信息 |
| | | agvLocMast.setLocSts("Q"); |
| | | agvLockMastService.selectById(agvLocMast); |
| | | //修改站点信息 |
| | | agvBasDevp.setLocSts("R"); |
| | | agvBasDevpService.updateById(agvBasDevp); |
| | | |
| | | //拣料入库 |
| | | if(ioType == 53){ |
| | | //修改工作党明细 |
| | | agvWrkDetl.setAnfme(agvLocDetl.getAnfme() - agvWrkDetl.getAnfme()); |
| | | agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("wrk_no",agvWrkDetl.getWrkNo())); |
| | | //修改库存信息 |
| | | agvLocDetl.setAnfme(agvWrkDetl.getAnfme()); |
| | | agvLocDetlService.update(agvLocDetl,new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocDetl.getLocNo())); |
| | | } |
| | | //修改库位信息 |
| | | updateAgvLocMast(agvLocMast,"Q"); |
| | | //修改站点信息 |
| | | updateAgvBasDevp(agvBasDevp,"R"); |
| | | |
| | | }); |
| | | } |
| | | |
| | | /* |
| | | 盘点出库 |
| | | */ |
| | | @Transactional |
| | | public void locCheckOut(StockOutParam param, Long userId) { |
| | | String station = param.getStation(); |
| | | List<AgvBasDevp> agvBasDevpList = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>() |
| | | .eq("station_code", station) |
| | | .eq("loc_sts","O")); |
| | | |
| | | if(param.getLocDetls().size() > agvBasDevpList.size()){ |
| | | throw new CoolException("当前站点可用缓存货架数量为" + agvBasDevpList.size() + ",少于需要盘点出库库位数量,请重新选择盘点库位"); |
| | | } |
| | | |
| | | param.getLocDetls().forEach(locDetl -> { |
| | | AgvLocMast agvLocMast = agvLocMastService.selectById(locDetl.getLocNo()); |
| | | AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", locDetl.getLocNo())); |
| | | AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>() |
| | | .eq("station_code", station) |
| | | .eq("loc_sts","O")); |
| | | Date now = new Date(); |
| | | |
| | | //生成工作党 |
| | | AgvWrkMast wrkMast = createWrkMast(107, 21L, locDetl.getLocNo(), agvBasDevp.getDevNo(), agvLocDetl.getZpallet(), now, userId); |
| | | //生成工作明细档 |
| | | createWrkDetlReWrite(locDetl.getMatnr(),wrkMast.getWrkNo(),null,locDetl.getBatch(),locDetl.getCount(),wrkMast.getBarcode(),now,userId); |
| | | //修改库位信息 |
| | | updateAgvLocMast(agvLocMast,"P"); |
| | | //修改站点信息 |
| | | updateAgvBasDevp(agvBasDevp,"S"); |
| | | |
| | | }); |
| | | |
| | | } |
| | | |
| | | /* |
| | | 库位移转 |
| | | */ |
| | | @Transactional |
| | | public void locMove(String sourceLocNo, String targetLocNo, Long userId) { |
| | | AgvLocMast sourceLocMast = agvLocMastService.selectById(sourceLocNo); |
| | | AgvLocMast targetLocMast = agvLocMastService.selectById(targetLocNo); |
| | | AgvLocDetl sourceLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", sourceLocMast.getLocNo())); |
| | | |
| | | if(!sourceLocMast.getLocSts().equals("F")){ |
| | | throw new CoolException(sourceLocMast.getLocNo() + "源库位出库失败,状态:"+sourceLocMast.getLocSts$()); |
| | | } |
| | | if(!targetLocMast.getLocSts().equals("O")){ |
| | | throw new CoolException("移转失败,目标库位状态:"+targetLocMast.getLocSts$()); |
| | | } |
| | | |
| | | Date now = new Date(); |
| | | //生成移库工作档 |
| | | AgvWrkMast wrkMast = createWrkMast(11, 21L, sourceLocNo, targetLocNo, sourceLocDetl.getZpallet(), now, userId); |
| | | //生成工作党明细 |
| | | createWrkDetlReWrite(sourceLocDetl.getMatnr(),wrkMast.getWrkNo(),null,sourceLocDetl.getBatch(),sourceLocDetl.getAnfme(),sourceLocDetl.getZpallet(),now,userId); |
| | | //修改目标库位状态 |
| | | updateAgvLocMast(targetLocMast,"S"); |
| | | //修改原库位状态 |
| | | updateAgvLocMast(sourceLocMast,"R"); |
| | | } |
| | | |
| | | /* |
| | | 空板入库 |
| | | */ |
| | | @Transactional |
| | | public String emptyPlateIn(String sourceStaion, Long userId) { |
| | | Date now = new Date(); |
| | | // 源站点状态检测 |
| | | AgvBasDevp agvBasDevp = agvBasDevpService.selectById(sourceStaion); |
| | | if(!agvBasDevp.getLocSts().equals("O")){ |
| | | throw new CoolException("当前工作位状态为" + agvBasDevp.getLocSts()+",无法进行空板入库"); |
| | | } |
| | | // 检索库位 |
| | | AgvLocMast locMast = agvCommonService.getLocNo(null, agvBasDevp.getFloor()); |
| | | // 生成工作档 10.空板入库 |
| | | createWrkMast(10,201L,agvBasDevp.getDevNo(),locMast.getLocNo(),null,now,userId); |
| | | //更新源站点状态 |
| | | updateAgvBasDevp(agvBasDevp,"R"); |
| | | //更新目标库位状态 |
| | | updateAgvLocMast(locMast,"S"); |
| | | return locMast.getLocNo(); |
| | | } |
| | | |
| | | /* |
| | | 空板出库 |
| | | */ |
| | | @Transactional |
| | | public void emptyPlateOut(EmptyPlateOutParam param, Long userId) { |
| | | Date now = new Date(); |
| | | //判断所选工作站空余工作位数量是否满足出库数量 |
| | | List<AgvBasDevp> agvBasDevpList = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>() |
| | | .eq("station_code", param.getStationCode()) |
| | | .eq("loc_sts","O")); |
| | | if(agvBasDevpList.size() < param.getLocNos().size()){ |
| | | throw new CoolException("当前工作站可出库工作位数量为"+ agvBasDevpList.size() + ",小于要出库的库位数量,请重新选择出库库位"); |
| | | } |
| | | param.getLocNos().forEach(locNo -> { |
| | | AgvLocMast agvLocMast = agvLocMastService.selectById(locNo); |
| | | if(!agvLocMast.getLocSts().equals("D")){ |
| | | throw new CoolException(agvLocMast.getLocNo() + "库位状态已经不为D.空桶/空栈板,请重新选择库位进行空板出库"); |
| | | } |
| | | //检索工作位 |
| | | AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>() |
| | | .eq("station_code", param.getStationCode()) |
| | | .eq("loc_sts", "O")); |
| | | //生成工作档 |
| | | createWrkMast(110,21L,locNo,agvBasDevp.getDevNo(),null,now,userId); |
| | | //修改源库位状态 |
| | | updateAgvLocMast(agvLocMast,"R"); |
| | | //修改目标工作位状态 |
| | | updateAgvBasDevp(agvBasDevp,"S"); |
| | | }); |
| | | } |
| | | |
| | |
| | | */ |
| | | private void updateAgvLocMast(AgvLocMast locMast, String locSts){ |
| | | locMast.setLocSts(locSts); |
| | | agvLockMastService.updateById(locMast); |
| | | agvLocMastService.updateById(locMast); |
| | | } |
| | | |
| | | /* |