| | |
| | | * 2. å¤å¶åéå®å°è´¦åäº§åæ°æ®ï¼çææ°çå°è´¦ |
| | | * 3. 对åå°è´¦çåºåæ°æ®è¿è¡ååæä½ |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public List<Long> counterReview(CounterReviewDto dto) { |
| | | if (dto == null || CollectionUtils.isEmpty(dto.getIds())) { |
| | | throw new ServiceException("è¯·éæ©è¦åå®¡æ ¸ç订å"); |
| | | } |
| | | if (dto.getCounterReviewType() == null || (dto.getCounterReviewType() != 1 && dto.getCounterReviewType() != 2)) { |
| | | throw new ServiceException("è¯·éæ©åå®¡æ ¸ç±»åï¼ä½åºæéæ°çæ"); |
| | | } |
| | | if (dto.getCounterReviewDesc() == null || dto.getCounterReviewDesc().trim().isEmpty()) { |
| | | throw new ServiceException("请è¾å
¥åå®¡æ ¸æè¿°"); |
| | | } |
| | | |
| | | LoginUser loginUser = SecurityUtils.getLoginUser(); |
| | | List<Long> newLedgerIds = new ArrayList<>(); |
| | | |
| | | for (Long id : dto.getIds()) { |
| | | SalesLedger originalLedger = salesLedgerMapper.selectById(id); |
| | | if (originalLedger == null) { |
| | | throw new ServiceException("订åä¸åå¨ï¼æ æ³åå®¡æ ¸"); |
| | | } |
| | | if (originalLedger.getReviewStatus() == null || originalLedger.getReviewStatus() != 1) { |
| | | throw new ServiceException("订å" + originalLedger.getSalesContractNo() + "䏿¯å·²å®¡æ ¸ç¶æï¼æ æ³åå®¡æ ¸"); |
| | | } |
| | | |
| | | // 1. æ è®°å订å为已å审 |
| | | originalLedger.setReviewStatus(2); |
| | | originalLedger.setCounterReviewTime(LocalDateTime.now()); |
| | | originalLedger.setCounterReviewPerson(loginUser.getUser().getNickName()); |
| | | originalLedger.setCounterReviewPersonId(loginUser.getUserId()); |
| | | originalLedger.setCounterReviewType(dto.getCounterReviewType()); |
| | | originalLedger.setCounterReviewDesc(dto.getCounterReviewDesc()); |
| | | salesLedgerMapper.updateById(originalLedger); |
| | | |
| | | // 2. ä½åºåºåï¼å
¥åºæ£åãåºåºå¢å ãå é¤è®°å½ |
| | | processOriginalOrderStock(id); |
| | | |
| | | // 3. æ¸
é¤è´¨æ£è®°å½ |
| | | clearQualityInspectRecords(id); |
| | | |
| | | // 4. æ¸
é¤åè´§ä¿¡æ¯åå货审æ¹è®°å½ |
| | | clearShippingAndApprovalRecords(id); |
| | | |
| | | // 5. åæ¶å®¡æ¹æµç¨ |
| | | cancelApproveProcesses(id, originalLedger.getSalesContractNo()); |
| | | |
| | | // 6. éæ°çæï¼å建æ°å°è´¦å¯æ¬ |
| | | if (dto.getCounterReviewType() == 2) { |
| | | SalesLedger newLedger = new SalesLedger(); |
| | | BeanUtils.copyProperties(originalLedger, newLedger); |
| | | newLedger.setId(null); |
| | | newLedger.setSalesContractNo(generateSalesContractNo()); |
| | | newLedger.setDeliveryStatus(1); |
| | | newLedger.setStockStatus(0); |
| | | newLedger.setReviewStatus(0); |
| | | newLedger.setCounterReviewTime(null); |
| | | newLedger.setCounterReviewPerson(null); |
| | | newLedger.setCounterReviewPersonId(null); |
| | | newLedger.setCounterReviewType(null); |
| | | newLedger.setCounterReviewDesc(null); |
| | | salesLedgerMapper.insert(newLedger); |
| | | |
| | | // å¤å¶äº§åå°æ°å°è´¦ |
| | | List<SalesLedgerProduct> originalProducts = salesLedgerProductMapper.selectList( |
| | | Wrappers.<SalesLedgerProduct>lambdaQuery() |
| | | .eq(SalesLedgerProduct::getSalesLedgerId, id) |
| | | ); |
| | | for (SalesLedgerProduct originalProduct : originalProducts) { |
| | | SalesLedgerProduct newProduct = new SalesLedgerProduct(); |
| | | BeanUtils.copyProperties(originalProduct, newProduct); |
| | | newProduct.setId(null); |
| | | newProduct.setSalesLedgerId(newLedger.getId()); |
| | | newProduct.setStockedQuantity(BigDecimal.ZERO); |
| | | newProduct.setShippedQuantity(BigDecimal.ZERO); |
| | | newProduct.setUnqualifiedStockedQuantity(BigDecimal.ZERO); |
| | | newProduct.setUnqualifiedShippedQuantity(BigDecimal.ZERO); |
| | | newProduct.setReturnQuality(BigDecimal.ZERO); |
| | | newProduct.setAvailableQuality(newProduct.getQuantity().subtract(newProduct.getReturnQuality())); |
| | | newProduct.setProductStockStatus(0); |
| | | newProduct.fillRemainingQuantity(); |
| | | salesLedgerProductMapper.insert(newProduct); |
| | | } |
| | | newLedgerIds.add(newLedger.getId()); |
| | | } |
| | | } |
| | | return newLedgerIds; |
| | | } |
| | | |
| | | /** |
| | | * æ§çå审å¤çï¼å
¼å®¹ addOrUpdateSalesLedger ä¸ reviewStatus=2 çè°ç¨ï¼ |
| | | */ |
| | | private void handleCounterReview(SalesLedger salesLedger) { |
| | | // 1. 设置å审ç¸å
³ä¿¡æ¯ |
| | | LoginUser loginUser = SecurityUtils.getLoginUser(); |