| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.Iterator; |
| | | import java.util.List; |
| | |
| | | @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")); |
| | | // 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() + ",少于需要盘点出库库位数量,请重新选择盘点库位"); |
| | | // } |
| | | |
| | | if(param.getLocDetls().size() > agvBasDevpList.size()){ |
| | | throw new CoolException("当前站点可用缓存货架数量为" + agvBasDevpList.size() + ",少于需要盘点出库库位数量,请重新选择盘点库位"); |
| | | } |
| | | |
| | | List<TaskDto> taskDtos = new ArrayList<>(); |
| | | 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.getSuppCode(), now, userId,false); |
| | | //生成工作明细档 |
| | | createWrkDetlReWrite(locDetl.getMatnr(),wrkMast.getWrkNo(),null,locDetl.getBatch(),locDetl.getCount(),wrkMast.getBarcode(),now,userId,agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime()); |
| | | //修改库位信息 |
| | | updateAgvLocMast(agvLocMast,"P"); |
| | | //修改站点信息 |
| | | updateAgvBasDevp(agvBasDevp,"S"); |
| | | |
| | | LocDto locDto = new LocDto(locDetl.getLocNo(),locDetl.getCount(),locDetl.getMatnr(),locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime(),locDetl.getSuppCode()); |
| | | TaskDto taskDto = new TaskDto(locDetl.getLocNo(),station,locDto); |
| | | if(TaskDto.has(taskDtos,taskDto)){ |
| | | TaskDto.find(taskDtos,taskDto).getLocDtos().add(locDto); |
| | | }else { |
| | | taskDtos.add(taskDto); |
| | | } |
| | | }); |
| | | |
| | | Date now = new Date(); |
| | | taskDtos.forEach(taskDto -> { |
| | | //生成工作档 |
| | | AgvWrkMast wrkMast = createWrkMast(107, 21L,taskDto.getLocNo(),taskDto.getAgvStaNo(),taskDto.getLocDtos().get(0).getContainerCode(),now,userId,false); |
| | | //生成工作档明细 |
| | | taskDto.getLocDtos().forEach(locDto -> { |
| | | //明细档所需参数 |
| | | createWrkDetlReWrite(locDto.getMatnr(), |
| | | wrkMast.getWrkNo(), |
| | | locDto.getOrderNo(), |
| | | locDto.getBatch(), |
| | | locDto.getAnfme(), |
| | | locDto.getContainerCode(), |
| | | now, |
| | | userId, |
| | | locDto.getCsocode(), |
| | | locDto.getIsoseq()); |
| | | }); |
| | | updateAgvLocMast(agvLocMastService.selectById(wrkMast.getSourceLocNo()),"P"); |
| | | //更新目标站点状态 |
| | | //locSts = ioType == 101 ? "S" : "Q"; |
| | | updateAgvBasDevp(agvBasDevpService.selectById(wrkMast.getLocNo()),"S"); |
| | | }); |
| | | |
| | | |
| | | // 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.getSuppCode(), now, userId,false); |
| | | // //生成工作明细档 |
| | | // createWrkDetlReWrite(locDetl.getMatnr(),wrkMast.getWrkNo(),null,locDetl.getBatch(),locDetl.getCount(),wrkMast.getBarcode(),now,userId,agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime()); |
| | | // //修改库位信息 |
| | | // updateAgvLocMast(agvLocMast,"P"); |
| | | // //修改站点信息 |
| | | // updateAgvBasDevp(agvBasDevp,"S"); |
| | | // |
| | | // }); |
| | | |
| | | } |
| | | |
| | |
| | | throw new CoolException("保存工作档失败"); |
| | | } |
| | | |
| | | //暂存位任务+1 |
| | | addInQty(locNo); |
| | | |
| | | wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo)); |
| | | |
| | | return wrkMast; |
| | | } |
| | | |
| | | /* |
| | | 生成工作档 |
| | | */ |
| | | @Deprecated |
| | | private AgvWrkMast createWrkMast(AgvBasDevp agvBasDevp,AgvLocMast agvLocMast, Date now, Long userId){ |
| | | AgvWrkMast wrkMast = new AgvWrkMast(); |
| | | //生成工作号 |
| | | //int workNo = agvCommonService.getWorkNo(0); |
| | | //wrkMast.setWrkNo(workNo); |
| | | wrkMast.setIoTime(new Date()); |
| | | // 工作状态:201.生成入库任务ID |
| | | wrkMast.setWrkSts(201L); |
| | | // 入出库状态:1.入库 |
| | | wrkMast.setIoType(1); |
| | | //生成优先级 |
| | | wrkMast.setIoPri(300.0); |
| | | wrkMast.setSourceLocNo(agvBasDevp.getDevNo()); |
| | | wrkMast.setLocNo(agvLocMast.getLocNo()); |
| | | wrkMast.setBarcode(agvBasDevp.getBarcode()); |
| | | // 满板:Y |
| | | wrkMast.setFullPlt("Y"); |
| | | // 拣料 |
| | | wrkMast.setPicking("N"); |
| | | // 退出 |
| | | wrkMast.setExitMk("N"); |
| | | // 空板 |
| | | wrkMast.setEmptyMk("N"); |
| | | wrkMast.setLinkMis("N"); |
| | | wrkMast.setAppeUser(userId); |
| | | wrkMast.setAppeTime(now); |
| | | wrkMast.setModiUser(userId); |
| | | wrkMast.setModiTime(now); |
| | | if (!agvWrkMastService.insert(wrkMast)) { |
| | | throw new CoolException("保存工作档失败"); |
| | | } |
| | | return wrkMast; |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | private void addInQty(String devno){ |
| | | AgvBasDevp agvBasDevp = agvBasDevpService.selectById(devno); |
| | | if(!Cools.isEmpty(agvBasDevp)){ |
| | | if(Cools.isEmpty(agvBasDevp.getInQty())){ |
| | | agvBasDevp.setInQty(1); |
| | | }else { |
| | | agvBasDevp.setInQty(agvBasDevp.getInQty() + 1); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |