| | |
| | | import com.zy.common.web.BaseController; |
| | | import com.zy.common.web.WcsController; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | |
| | | private RowLastnoService rowLastnoService; |
| | | @Autowired |
| | | private SlaveProperties slaveProperties; |
| | | @Autowired |
| | | private DocTypeService docTypeService; |
| | | @Autowired |
| | | private AgvWaitPakinService agvWaitPakinService; |
| | | |
| | | @Override |
| | | @Transactional |
| | |
| | | // 生成工作档明细 |
| | | List<DetlDto> detlDtos = new ArrayList<>(); |
| | | param.getList().forEach(elem -> { |
| | | DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(), elem.getCsocode(), elem.getIsoseq()); |
| | | detlDto.setContainerCode(elem.getContainerCode()); |
| | | DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(), elem.getCsocode(), elem.getIsoseq(),elem.getContainerCode()); |
| | | if (DetlDto.has(detlDtos, detlDto)) { |
| | | DetlDto detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(),detlDto.getCsocode(),detlDto.getIsoseq(),detlDto.getContainerCode()); |
| | | assert detlDto1 != null; |
| | |
| | | List<LocDetlDto> locDetlDtos = new ArrayList<>(); |
| | | for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { |
| | | if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) { |
| | | LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(), null); |
| | | LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(), paramLocDetl.getContainerCode()); |
| | | if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); |
| | | } |
| | | } |
| | |
| | | sourceStaNo = staDesc.getStnNo(); |
| | | } |
| | | |
| | | int lev = Utils.getLev(dto.getLocNo()); |
| | | if (lev == 1 || lev == 2) { |
| | | if (!(stnNo == 100 || stnNo == 103 || stnNo == 105)) { |
| | | throw new CoolException("1、2层货物仅允许在一楼进行出库"); |
| | | } |
| | | } |
| | | |
| | | // 生成工作档 |
| | | WrkMast wrkMast = new WrkMast(); |
| | | wrkMast.setWrkNo(workNo); |
| | |
| | | sourceStaNo = staDesc.getStnNo(); |
| | | } |
| | | |
| | | int lev = Utils.getLev(taskDto.getLocNo()); |
| | | if (lev == 1 || lev == 2) { |
| | | if (!(stnNo == 100 || stnNo == 103 || stnNo == 105)) { |
| | | throw new CoolException("1、2层货物仅允许在一楼进行出库"); |
| | | } |
| | | } |
| | | |
| | | // 生成工作档 |
| | | WrkMast wrkMast = new WrkMast(); |
| | | wrkMast.setWrkNo(workNo); |
| | |
| | | wrkMast.setCrnNo(outMost?outCrnNo:locMast.getCrnNo()); |
| | | wrkMast.setSourceStaNo(sourceStaNo); // 源站 |
| | | wrkMast.setStaNo(stnNo); // 目标站 |
| | | if(ioType == 101 && taskDto.getStaNo()>=300){ |
| | | wrkMast.setSourceStaNo(346); // 源站 |
| | | wrkMast.setStaNo(346); // 目标站 |
| | | } |
| | | wrkMast.setSourceLocNo(taskDto.getLocNo()); // 源库位 |
| | | wrkMast.setFullPlt("Y"); // 满板:Y |
| | | wrkMast.setPicking("N"); // 拣料 |
| | |
| | | if (!wrkDetlService.insert(wrkDetl)) { |
| | | throw new CoolException("保存工作档明细失败"); |
| | | } |
| | | //补货单则生成AGV入库通知档 |
| | | generateAgvWaitpakin(wrkDetl); |
| | | |
| | | // 修改订单明细 |
| | | if (!BaseController.isJSON(locDto.getOrderNo())) { |
| | | OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch()); |
| | |
| | | if (Cools.isEmpty(wrkMast)){ |
| | | throw new CoolException(workNo+"工作档不存在"); |
| | | } |
| | | |
| | | if (wrkMast.getIoType() == 200) { |
| | | //小车移库任务,直接删除工作档 |
| | | wrkMastService.deleteById(wrkMast); |
| | | return; |
| | | } |
| | | |
| | | if (wrkMast.getWrkSts() == 9 || wrkMast.getWrkSts() == 29) { |
| | | throw new CoolException("当前工作档已完成"); |
| | | } |
| | |
| | | if (!locDetl.getAnfme().equals(adjust.getCount())) { |
| | | // todo 盘点记录 |
| | | // 修改库存 |
| | | if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) { |
| | | if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getSuppCode(),locDetl.getThreeCode(),locDetl.getDeadTime())) { |
| | | throw new CoolException(locDetl.getLocNo() + "库位," + locDetl.getMatnr() + "商品," + locDetl.getBatch() + "序列码修改数量失败"); |
| | | } |
| | | // 保存调整记录 |
| | |
| | | adjDetl.setModiUser(userId); |
| | | adjDetl.setAppeTime(now); |
| | | adjDetl.setAppeUser(userId); |
| | | |
| | | UUID uuid = UUID.randomUUID(); |
| | | adjDetl.setOrderNo(uuid.toString()); |
| | | adjDetl.setOrderNo(Utils.generateAdjustOrderNo()); |
| | | adjDetl.setCsocode(locDetl.getThreeCode()); |
| | | adjDetl.setIsoseq(locDetl.getDeadTime()); |
| | | |
| | |
| | | // 删除库存 |
| | | for (LocDetl locDetl : locDetls) { |
| | | // todo 盘点记录 |
| | | if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) { |
| | | if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getSuppCode(),locDetl.getThreeCode(),locDetl.getDeadTime())) { |
| | | throw new CoolException("删除" + locDetl.getLocNo() + "库位," + locDetl.getMatnr() + "商品," + locDetl.getBatch() + "序列码库存明细失败"); |
| | | } |
| | | // 保存调整记录 |
| | |
| | | adjDetl.setModiUser(userId); |
| | | adjDetl.setAppeTime(now); |
| | | adjDetl.setAppeUser(userId); |
| | | |
| | | adjDetl.setOrderNo(Utils.generateAdjustOrderNo()); |
| | | adjDetlService.save(adjDetl, userId); |
| | | } |
| | | |
| | |
| | | adjDetl.setModiUser(userId); |
| | | adjDetl.setAppeTime(now); |
| | | adjDetl.setAppeUser(userId); |
| | | |
| | | UUID uuid = UUID.randomUUID(); |
| | | adjDetl.setOrderNo(uuid.toString()); |
| | | adjDetl.setCsocode(locDetl.getThreeCode()); |
| | | adjDetl.setIsoseq(locDetl.getDeadTime()); |
| | | adjDetl.setOrderNo(Utils.generateAdjustOrderNo()); |
| | | |
| | | adjDetlService.save(adjDetl, userId); |
| | | } |
| | |
| | | throw new CoolException(workNo+"工作档不存在"); |
| | | } |
| | | |
| | | if (wrkMast.getWrkSts() == 200) { |
| | | if (wrkMast.getIoType() == 200) { |
| | | //小车移库任务,直接删除工作档 |
| | | wrkMastService.deleteById(wrkMast); |
| | | return; |
| | |
| | | return ""; |
| | | } |
| | | |
| | | private void generateAgvWaitpakin(WrkDetl wrkDetl){ |
| | | Order order = orderService.selectByNo(wrkDetl.getOrderNo()); |
| | | DocType docType = docTypeService.selectById(order.getDocType()); |
| | | if("人工补货单".equals(docType.getDocName())){ |
| | | AgvWaitPakin agvWaitPakin = new AgvWaitPakin(); |
| | | BeanUtils.copyProperties(wrkDetl,agvWaitPakin); |
| | | agvWaitPakinService.insert(agvWaitPakin); |
| | | } |
| | | } |
| | | |
| | | } |