| | |
| | | 入库 |
| | | */ |
| | | @Transactional |
| | | @Synchronized |
| | | public StartupDto createWaitPainWrkMastStart(List<AgvBasDevp> agvBasDevpList, Long userId, boolean isConveyor) { |
| | | public synchronized StartupDto createWaitPainWrkMastStart(List<AgvBasDevp> agvBasDevpList, Long userId, boolean isConveyor) { |
| | | |
| | | Date now = new Date(); |
| | | |
| | |
| | | wrkMast.setMk(isConveyor ? "Y" : "N"); |
| | | //生成工作档明细 |
| | | agvWaitPakinList.forEach(wp -> { |
| | | createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getSuppCode(),now,userId,wp.getThreeCode(),wp.getDeadTime()); |
| | | createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getSuppCode(),now,userId,wp.getThreeCode(),wp.getDeadTime(),wp.getProddate(),wp.getDeadline()); |
| | | }); |
| | | //更新源站点信息 |
| | | updateAgvBasDevp(agvBasDevp,"R"); |
| | |
| | | now, |
| | | userId, |
| | | locDto.getCsocode(), |
| | | locDto.getIsoseq()); |
| | | locDto.getIsoseq(), |
| | | locDto.getProddate(), |
| | | locDto.getDeadline()); |
| | | }else { |
| | | List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class); |
| | | orderDtoList.forEach(orderDto -> { |
| | |
| | | now, |
| | | userId, |
| | | locDto.getCsocode(), |
| | | locDto.getIsoseq()); |
| | | locDto.getIsoseq(), |
| | | locDto.getProddate(), |
| | | locDto.getDeadline()); |
| | | }); |
| | | } |
| | | |
| | |
| | | //agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("wrk_no",agvWrkDetl.getWrkNo())); |
| | | //修改库存信息 |
| | | agvWrkDetlList.forEach(agvWrkDetl -> { |
| | | if(agvWrkDetl.getAnfme() <= 0){ |
| | | return; |
| | | } |
| | | |
| | | AgvLocDetl agvLocDetl = agvLocDetlService.selectByMatnrAndBatchAndCsocodeAndisoCode(agvWrkMast.getLocNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime()); |
| | | |
| | | //AgvLocDetl agvLocDetl = agvLocDetlService.selectLocdetl(agvWrkMast.getLocNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getBatch(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime()); |
| | | |
| | | double updateAnfme = agvLocDetl.getAnfme() - agvWrkDetl.getAnfme(); |
| | | agvLocDetlService.updateAnfme(updateAnfme,agvLocDetl.getLocNo(),agvLocDetl.getMatnr(),agvLocDetl.getBatch(),agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime()); |
| | | }); |
| | |
| | | |
| | | List<TaskDto> taskDtos = new ArrayList<>(); |
| | | param.getLocDetls().forEach(locDetl -> { |
| | | LocDto locDto = new LocDto(locDetl.getLocNo(),locDetl.getCount(),locDetl.getMatnr(),locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime(),locDetl.getSuppCode()); |
| | | LocDto locDto = new LocDto(locDetl.getLocNo(),locDetl.getCount(),locDetl.getMatnr(),locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime(),locDetl.getSuppCode(),locDetl.getProddate(),locDetl.getDeadline()); |
| | | TaskDto taskDto = new TaskDto(locDetl.getLocNo(),station,locDto); |
| | | if(TaskDto.has(taskDtos,taskDto)){ |
| | | TaskDto.find(taskDtos,taskDto).getLocDtos().add(locDto); |
| | |
| | | taskDtos.forEach(taskDto -> { |
| | | |
| | | //判断是否有重复料想的工作当 |
| | | AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(taskDto.getLocDtos().get(0).getContainerCode()); |
| | | if(!Cools.isEmpty(agvWrkMast)){ |
| | | AgvWrkMast agvWrkMastList = agvWrkMastService.selectByContainerCode(taskDto.getLocDtos().get(0).getContainerCode()); |
| | | if(!Cools.isEmpty(agvWrkMastList)){ |
| | | return; |
| | | } |
| | | |
| | |
| | | now, |
| | | userId, |
| | | locDto.getCsocode(), |
| | | locDto.getIsoseq()); |
| | | locDto.getIsoseq(), |
| | | locDto.getProddate(), |
| | | locDto.getDeadline()); |
| | | }); |
| | | updateAgvLocMast(agvLocMastService.selectById(wrkMast.getSourceLocNo()),"P"); |
| | | //更新目标站点状态 |
| | |
| | | //生成移库工作档 |
| | | AgvWrkMast wrkMast = createWrkMast(11, 21L, sourceLocNo, targetLocNo, sourceLocDetl.getSuppCode(), now, userId,false); |
| | | //生成工作党明细 |
| | | createWrkDetlReWrite(sourceLocDetl.getMatnr(),wrkMast.getWrkNo(),null,sourceLocDetl.getBatch(),sourceLocDetl.getAnfme(),sourceLocDetl.getZpallet(),now,userId,sourceLocDetl.getThreeCode(),sourceLocDetl.getDeadTime()); |
| | | createWrkDetlReWrite(sourceLocDetl.getMatnr(),wrkMast.getWrkNo(),null,sourceLocDetl.getBatch(),sourceLocDetl.getAnfme(),sourceLocDetl.getZpallet(),now,userId,sourceLocDetl.getThreeCode(),sourceLocDetl.getDeadTime(),sourceLocDetl.getProddate(),sourceLocDetl.getDeadline()); |
| | | //修改目标库位状态 |
| | | updateAgvLocMast(targetLocMast,"S"); |
| | | //修改原库位状态 |
| | |
| | | adjDetl.setBatch(locDetl.getBatch()); |
| | | adjDetl.setOriQty(locDetl.getAnfme()); |
| | | adjDetl.setAdjQty(adjust.getCount()); |
| | | adjDetl.setMemo(locDetl.getSuppCode()); |
| | | adjDetl.setModiTime(now); |
| | | adjDetl.setModiUser(userId); |
| | | adjDetl.setAppeTime(now); |
| | |
| | | } |
| | | //拣料入库 盘点入库不可取消 |
| | | if(wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57){ |
| | | throw new CoolException("当前任务不可取消"); |
| | | if (userId != 9527) { |
| | | throw new CoolException("当前任务不可取消"); |
| | | } |
| | | } |
| | | |
| | | //入库取消 |
| | | if(wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10){ |
| | | if(wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10 || wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57){ |
| | | //源站点 |
| | | String devNo = wrkMast.getSourceLocNo(); |
| | | //目标库位 |
| | |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void changeToOutWrkMast(String workNo, Long userId) { |
| | | AgvWrkMast agvWrkMast = agvWrkMastService.selectById(workNo); |
| | | if (Cools.isEmpty(agvWrkMast)){ |
| | | throw new CoolException(workNo+"工作档不存在"); |
| | | } |
| | | if (agvWrkMast.getIoType() == 1 || agvWrkMast.getIoType() == 53){ |
| | | throw new CoolException(workNo+"入库任务无法转出库"); |
| | | } |
| | | |
| | | agvWrkMast.setIoType(101); |
| | | agvWrkMast.setWrkSts(206L); |
| | | agvWrkMast.setModiTime(new Date()); |
| | | agvWrkMast.setModiUser(userId); |
| | | |
| | | agvWrkMastService.updateById(agvWrkMast); |
| | | |
| | | } |
| | | |
| | | /* |
| | | 更新目标库位信息 |
| | | */ |
| | |
| | | /* |
| | | 生成工作档明细 |
| | | */ |
| | | private void createWrkDetlReWrite(String matnr, int wrkNo, String orderNo,String batch, double anfme, String zpallet, Date now, Long userId, String csocode, String isoseq){ |
| | | private void createWrkDetlReWrite(String matnr, int wrkNo, String orderNo,String batch, double anfme, String zpallet, Date now, Long userId, String csocode, String isoseq,Date proddate,Date deadline){ |
| | | Mat mat = matService.selectByMatnr(matnr); |
| | | if (Cools.isEmpty(mat)) { |
| | | throw new CoolException(matnr + "商品维护失败"); |
| | |
| | | wrkDetl.setAppeTime(now); |
| | | wrkDetl.setModiUser(userId); |
| | | wrkDetl.setModiTime(now); |
| | | |
| | | wrkDetl.setProddate(proddate); |
| | | wrkDetl.setDeadline(deadline); |
| | | wrkDetl.setThreeCode(csocode); |
| | | wrkDetl.setDeadTime(isoseq); |
| | | if (!agvWrkDetlService.insert(wrkDetl)) { |