From 366b67926809852c1090f14c5a24fe00109a81b5 Mon Sep 17 00:00:00 2001 From: maven <2163098428@qq.com> Date: 星期一, 28 七月 2025 17:59:52 +0800 Subject: [PATCH] yys 首页接口开发 --- src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 139 +++++++++++++++++++++++++++++++++------------- 1 files changed, 100 insertions(+), 39 deletions(-) diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java index 837245e..fa807c9 100644 --- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java +++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java @@ -2,15 +2,24 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; 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.basic.mapper.CustomerMapper; import com.ruoyi.basic.pojo.Customer; +import com.ruoyi.common.enums.FileNameType; import com.ruoyi.common.exception.base.BaseException; +import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.other.mapper.TempFileMapper; import com.ruoyi.other.pojo.TempFile; +import com.ruoyi.production.mapper.SalesLedgerSchedulingMapper; +import com.ruoyi.production.pojo.SalesLedgerScheduling; +import com.ruoyi.project.system.domain.SysDept; +import com.ruoyi.project.system.mapper.SysDeptMapper; import com.ruoyi.sales.dto.MonthlyAmountDto; import com.ruoyi.sales.dto.SalesLedgerDto; import com.ruoyi.sales.mapper.*; @@ -68,8 +77,10 @@ private final InvoiceLedgerMapper invoiceLedgerMapper; + private final SalesLedgerSchedulingMapper salesLedgerSchedulingMapper; + @Autowired - private InvoiceRegistrationProductMapper invoiceRegistrationProductMapper; + private SysDeptMapper sysDeptMapper; @Value("${file.upload-dir}") private String uploadDir; @@ -85,6 +96,7 @@ return salesLedgerMapper.selectSalesLedgerList(salesLedgerDto); } + @Override public SalesLedgerDto getSalesLedgerWithProducts(SalesLedgerDto salesLedgerDto) { // 1. 鏌ヨ涓昏〃 SalesLedger salesLedger = salesLedgerMapper.selectById(salesLedgerDto.getId()); @@ -95,12 +107,15 @@ // 2. 鏌ヨ瀛愯〃 LambdaQueryWrapper<SalesLedgerProduct> productWrapper = new LambdaQueryWrapper<>(); productWrapper.eq(SalesLedgerProduct::getSalesLedgerId, salesLedger.getId()); + productWrapper.eq(SalesLedgerProduct::getType, 1); List<SalesLedgerProduct> products = salesLedgerProductMapper.selectList(productWrapper); for (SalesLedgerProduct product : products) { product.setOriginalNoInvoiceNum(product.getNoInvoiceNum()); // 鎻愪緵涓存椂鏈紑绁ㄦ暟锛屾湭寮�绁ㄩ噾棰濅緵鍓嶆璁$畻 product.setTempnoInvoiceAmount(product.getNoInvoiceAmount()); product.setTempNoInvoiceNum(product.getNoInvoiceNum()); + product.setRegister(SecurityUtils.getLoginUser().getUser().getNickName()); + product.setRegisterDate(LocalDateTime.now()); } // 3.鏌ヨ涓婁紶鏂囦欢 @@ -189,53 +204,82 @@ } @Override - public List<MonthlyAmountDto> getAmountHalfYear() { + public List<MonthlyAmountDto> getAmountHalfYear(Integer type) { LocalDate now = LocalDate.now(); - YearMonth currentMonth = YearMonth.from(now); + LocalDateTime currentDateTime = LocalDateTime.now(); - List<MonthlyAmountDto> monthlyAmounts = new ArrayList<>(); + // 鏍规嵁 type 纭畾鏌ヨ鐨勬椂闂撮棿闅旓紙澶╂暟锛夊拰鎬绘煡璇㈠ぉ鏁� + int daysPerPeriod; + int totalDays; + switch (type) { + case 1: + daysPerPeriod = 5; // 姣�5澶╂煡涓�娆� + totalDays = 30; // 6娆� 脳 5澶� = 30澶� + break; + case 2: + daysPerPeriod = 15; // 姣�15澶╂煡涓�娆� + totalDays = 90; // 6娆� 脳 15澶� = 90澶� + break; + case 3: + daysPerPeriod = 30; // 姣�30澶╂煡涓�娆� + totalDays = 180; // 6娆� 脳 30澶� = 180澶� + break; + default: + throw new IllegalArgumentException("Invalid type value: " + type); + } + List<MonthlyAmountDto> result = new ArrayList<>(); + + // 寰幆6娆★紝姣忔鏌ヨ涓�涓椂闂存鐨勬暟鎹� for (int i = 0; i < 6; i++) { - YearMonth targetMonth = currentMonth.minusMonths(i); - LocalDate firstDayOfMonth = targetMonth.atDay(1); - LocalDate firstDayOfNextMonth = targetMonth.plusMonths(1).atDay(1); + // 璁$畻褰撳墠鏃堕棿娈电殑璧峰鍜岀粨鏉熸椂闂� + LocalDateTime endTime = currentDateTime.minusDays(i * daysPerPeriod); + LocalDateTime startTime = endTime.minusDays(daysPerPeriod); - LocalDateTime startOfMonth = firstDayOfMonth.atStartOfDay(); - LocalDateTime startOfNextMonth = firstDayOfNextMonth.atStartOfDay(); + // 鏌ヨ鍥炴閲戦 + LambdaQueryWrapper<ReceiptPayment> receiptPaymentQuery = new LambdaQueryWrapper<>(); + receiptPaymentQuery + .ge(ReceiptPayment::getCreateTime, startTime) + .lt(ReceiptPayment::getCreateTime, endTime); + List<ReceiptPayment> receiptPayments = receiptPaymentMapper.selectList(receiptPaymentQuery); - LambdaQueryWrapper<ReceiptPayment> receiptPaymentLambdaQueryWrapper = new LambdaQueryWrapper<>(); - receiptPaymentLambdaQueryWrapper.ge(ReceiptPayment::getCreateTime, startOfMonth) - .lt(ReceiptPayment::getCreateTime, startOfNextMonth); + // 鏌ヨ寮�绁ㄩ噾棰� + LambdaQueryWrapper<InvoiceLedger> invoiceLedgerQuery = new LambdaQueryWrapper<>(); + invoiceLedgerQuery + .ge(InvoiceLedger::getCreateTime, startTime) + .lt(InvoiceLedger::getCreateTime, endTime); + List<InvoiceLedger> invoiceLedgers = invoiceLedgerMapper.selectList(invoiceLedgerQuery); - LambdaQueryWrapper<InvoiceLedger> invoiceLedgerLambdaQueryWrapper = new LambdaQueryWrapper<>(); - invoiceLedgerLambdaQueryWrapper.ge(InvoiceLedger::getCreateTime, startOfMonth) - .lt(InvoiceLedger::getCreateTime, startOfNextMonth); - - // 鑾峰彇鍥炴閲戦 - List<ReceiptPayment> receiptPaymentList = receiptPaymentMapper.selectList(receiptPaymentLambdaQueryWrapper); - //寮�绁ㄩ噾棰� - List<InvoiceLedger> invoiceLedgerList = invoiceLedgerMapper.selectList(invoiceLedgerLambdaQueryWrapper); - - // 浣跨敤 Stream 姹傚拰 - BigDecimal invoiceAmount = invoiceLedgerList.stream() - .map(InvoiceLedger::getInvoiceTotal) - .filter(Objects::nonNull) - .reduce(BigDecimal.ZERO, BigDecimal::add); - - BigDecimal receiptAmount = receiptPaymentList.stream() + // 璁$畻鍥炴鎬婚 + BigDecimal receiptAmount = receiptPayments.stream() .map(ReceiptPayment::getReceiptPaymentAmount) .filter(Objects::nonNull) .reduce(BigDecimal.ZERO, BigDecimal::add); - MonthlyAmountDto monthlyAmount = new MonthlyAmountDto(); - monthlyAmount.setMonth(targetMonth.format(DateTimeFormatter.ofPattern("yyyy-MM"))); - monthlyAmount.setInvoiceAmount(invoiceAmount); - monthlyAmount.setReceiptAmount(receiptAmount); + // 璁$畻寮�绁ㄦ�婚 + BigDecimal invoiceAmount = invoiceLedgers.stream() + .map(InvoiceLedger::getInvoiceTotal) + .filter(Objects::nonNull) + .reduce(BigDecimal.ZERO, BigDecimal::add); - monthlyAmounts.add(monthlyAmount); + // 鏋勯�犺繑鍥炵殑 DTO + MonthlyAmountDto dto = new MonthlyAmountDto(); + dto.setMonth(startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + " ~ " + + endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); + dto.setReceiptAmount(receiptAmount); + dto.setInvoiceAmount(invoiceAmount); + + result.add(dto); } - Collections.reverse(monthlyAmounts); - return monthlyAmounts; + + // 鍙嶈浆鍒楄〃锛屼娇鏃堕棿椤哄簭浠庢棭鍒版櫄 + Collections.reverse(result); + return result; + } + + @Override + public IPage<SalesLedger> selectSalesLedgerListPage(Page page, SalesLedgerDto salesLedgerDto) { + return salesLedgerMapper.selectSalesLedgerListPage(page, salesLedgerDto); } // 鍐呴儴绫荤敤浜庡瓨鍌ㄨ仛鍚堢粨鏋� @@ -296,15 +340,23 @@ List<Long> idList = Arrays.stream(ids) .filter(Objects::nonNull) .collect(Collectors.toList()); - if (CollectionUtils.isEmpty(idList)) { return 0; + } + // 鐢熶骇璁㈠崟鏈夊緟鎺掍骇鏁版嵁锛屽彴璐︿笉鍙垹闄� + LambdaQueryWrapper<SalesLedgerScheduling> salesLedgerSchedulingLambdaQueryWrapper = new LambdaQueryWrapper<SalesLedgerScheduling>() + .in(SalesLedgerScheduling::getSalesLedgerId, idList); + if (salesLedgerSchedulingMapper.selectCount(salesLedgerSchedulingLambdaQueryWrapper) > 0) { + throw new BaseException("鏈夋帓浜ф暟鎹紝涓嶅彲鍒犻櫎"); } // 1. 鍏堝垹闄ゅ瓙琛ㄦ暟鎹� LambdaQueryWrapper<SalesLedgerProduct> productWrapper = new LambdaQueryWrapper<>(); productWrapper.in(SalesLedgerProduct::getSalesLedgerId, idList); salesLedgerProductMapper.delete(productWrapper); - + // 鍒犻櫎鐢熶骇璁㈠崟鏁版嵁 + LambdaQueryWrapper<SalesLedgerScheduling> in = new LambdaQueryWrapper<SalesLedgerScheduling>() + .in(SalesLedgerScheduling::getSalesLedgerId, idList); + salesLedgerSchedulingMapper.delete(in); // 2. 鍐嶅垹闄や富琛ㄦ暟鎹� return salesLedgerMapper.deleteBatchIds(idList); } @@ -414,7 +466,8 @@ fileRecord.setName(originalFilename); fileRecord.setUrl(formalFilePath.toString()); fileRecord.setCreateTime(LocalDateTime.now()); - fileRecord.setType("1"); + //閿�鍞� + fileRecord.setType(FileNameType.SALE.getValue()); commonFileMapper.insert(fileRecord); // 鍒犻櫎涓存椂鏂囦欢璁板綍 @@ -492,7 +545,15 @@ throw new RuntimeException("鑾峰彇鍚堝悓缂栧彿鐢熸垚閿佸け璐ワ細瓒呮椂"); } - // 2. 鏌ヨ褰撳ぉ宸插瓨鍦ㄧ殑搴忓垪鍙凤紙涓庡師閫昏緫涓�鑷达級 + // 2. 鏌ヨ褰撳ぉ/鍏徃宸插瓨鍦ㄧ殑搴忓垪鍙凤紙涓庡師閫昏緫涓�鑷达級 + Long tenantId = SecurityUtils.getLoginUser().getTenantId(); + if (null != tenantId) { + //鑾峰彇鍏徃缂栧彿 + SysDept sysDept = sysDeptMapper.selectDeptById(tenantId.longValue()); + if (!ObjectUtils.isEmpty(sysDept)) { + datePart = (StringUtils.isEmpty(sysDept.getDeptNick()) ? "" : sysDept.getDeptNick()) + datePart; + } + } List<Integer> existingSequences = salesLedgerMapper.selectSequencesByDate(datePart); int nextSequence = findFirstMissingSequence(existingSequences); -- Gitblit v1.9.3