| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.account.service.impl.sales; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.account.bean.dto.sales.AccountSalesCollectionDto; |
| | | import com.ruoyi.account.bean.vo.sales.AccountSalesCollectionVo; |
| | | import com.ruoyi.account.bean.vo.sales.SalesOutboundVo; |
| | | import com.ruoyi.account.mapper.AccountStatementDetailsMapper; |
| | | import com.ruoyi.account.mapper.sales.AccountSalesCollectionMapper; |
| | | import com.ruoyi.account.pojo.AccountStatementDetails; |
| | | import com.ruoyi.account.pojo.sales.AccountSalesCollection; |
| | | import com.ruoyi.account.service.sales.AccountSalesCollectionService; |
| | | import com.ruoyi.common.exception.ServiceException; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.Random; |
| | | |
| | | /** |
| | | * <p> |
| | | * è´¢å¡ç®¡ç--æ¶æ¬¾å æå¡å®ç°ç±» |
| | | * </p> |
| | | * |
| | | * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå
¬å¸ |
| | | * @since 2026-05-18 03:49:56 |
| | | */ |
| | | @Service |
| | | @RequiredArgsConstructor |
| | | public class AccountSalesCollectionServiceImpl extends ServiceImpl<AccountSalesCollectionMapper, AccountSalesCollection> implements AccountSalesCollectionService { |
| | | |
| | | private final AccountSalesCollectionMapper accountSalesCollectionMapper; |
| | | private final AccountStatementDetailsMapper accountStatementDetailsMapper; |
| | | private static final DateTimeFormatter CODE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyMMddHHmmss"); |
| | | |
| | | |
| | | @Override |
| | | public IPage<AccountSalesCollectionVo> listPageAccountSalesCollection(Page page, AccountSalesCollectionDto accountSalesCollectionDto) { |
| | | return accountSalesCollectionMapper.listPageAccountSalesCollection(page, accountSalesCollectionDto); |
| | | } |
| | | |
| | | @Override |
| | | public boolean addAccountSalesCollection(AccountSalesCollection accountSalesCollection) { |
| | | if (StringUtils.isEmpty(accountSalesCollection.getCollectionNumber())) { |
| | | accountSalesCollection.setCollectionNumber(genAccountSalesCollectionNo()); |
| | | } |
| | | // String stockOutRecordIds = accountSalesCollection.getStockOutRecordIds(); |
| | | // if (stockOutRecordIds != null && !stockOutRecordIds.isEmpty()) { |
| | | // List<Long> ids = Arrays.stream(stockOutRecordIds.split(",")) |
| | | // .map(Long::valueOf) |
| | | // .toList(); |
| | | // if (accountSalesCollectionMapper.existsByStockOutRecordId(ids)){ |
| | | // throw new ServiceException("åå¨éå¤çåºåºå"); |
| | | // } |
| | | // } |
| | | return save(accountSalesCollection); |
| | | } |
| | | |
| | | @Override |
| | | public void exportAccountSalesCollection(HttpServletResponse response, AccountSalesCollectionDto accountSalesCollectionDto) { |
| | | List<AccountSalesCollectionVo> list = accountSalesCollectionMapper.listPageAccountSalesCollection(new Page(1,-1),accountSalesCollectionDto).getRecords(); |
| | | ExcelUtil<AccountSalesCollectionVo> util = new ExcelUtil<>(AccountSalesCollectionVo.class); |
| | | util.exportExcel(response, list , "æ¶æ¬¾å"); |
| | | } |
| | | |
| | | @Override |
| | | public boolean deleteAccountSalesCollection(List<Long> ids) { |
| | | //å¦æè¯¥æ¶æ¬¾åå·²ç»çæå¯¹è´¦ååæ æ³å é¤ |
| | | List<AccountSalesCollection> accountSalesCollections = accountSalesCollectionMapper.selectByIds(ids); |
| | | List<String> strings = accountSalesCollections.stream().map(AccountSalesCollection::getCollectionNumber).toList(); |
| | | List<AccountStatementDetails> accountStatementDetails = accountStatementDetailsMapper.selectList(Wrappers.<AccountStatementDetails>lambdaQuery() |
| | | .in(AccountStatementDetails::getReceiptNumber, strings)); |
| | | if (CollectionUtils.isNotEmpty(accountStatementDetails)){ |
| | | throw new ServiceException("è¯¥æ¶æ¬¾åå·²ç»çæå¯¹è´¦åï¼æ æ³å é¤"); |
| | | } |
| | | return removeByIds(ids); |
| | | } |
| | | |
| | | @Override |
| | | public List<SalesOutboundVo> getOutboundBatchesByCustomer(Integer customerId) { |
| | | return accountSalesCollectionMapper.getOutboundBatchesByCustomer(customerId); |
| | | } |
| | | |
| | | private String genAccountSalesCollectionNo() { |
| | | return "SK" + LocalDateTime.now().format(CODE_TIME_FORMATTER) + new Random().nextInt(10); |
| | | } |
| | | } |