maven
2025-12-12 69af9b4bd1cf6e75a848c70a0fe1964e08d91b7a
src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -24,6 +24,9 @@
import com.ruoyi.framework.security.LoginUser;
import com.ruoyi.other.mapper.TempFileMapper;
import com.ruoyi.other.pojo.TempFile;
import com.ruoyi.procurementrecord.dto.Details;
import com.ruoyi.procurementrecord.dto.ProcurementAddDto;
import com.ruoyi.procurementrecord.service.ProcurementRecordService;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysUserMapper;
import com.ruoyi.purchase.dto.PurchaseLedgerDto;
@@ -43,6 +46,7 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
@@ -110,6 +114,9 @@
        return purchaseLedgerMapper.selectList(queryWrapper);
    }
    @Autowired
    private ProcurementRecordService procurementRecordService;
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int addOrEditPurchase(PurchaseLedgerDto purchaseLedgerDto) throws IOException {
@@ -153,18 +160,20 @@
        } else {
            purchaseLedgerMapper.updateById(purchaseLedger);
            PurchaseLedger purchaseLedgerDB = purchaseLedgerMapper.selectById(purchaseLedger.getId());
            AccountExpense accountExpenseDB = accountExpenseService.getByInvoiceNumber(purchaseLedger.getPurchaseContractNumber());
            if (ObjectUtils.isEmpty(accountExpenseDB)) {
                throw new BaseException("支出管理无该采购合同的支出记录");
            List<AccountExpense> accountExpenseDBs = accountExpenseService.getByInvoiceNumberList(purchaseLedger.getPurchaseContractNumber());
            if (!CollectionUtils.isEmpty(accountExpenseDBs)) {
                accountExpenseDBs.forEach(accountExpenseDB ->{
                    accountExpenseDB.setExpenseDate(purchaseLedgerDB.getEntryDate());
                    accountExpenseDB.setExpenseType("0");
                    accountExpenseDB.setSupplierName(purchaseLedgerDB.getSupplierName());
                    accountExpenseDB.setExpenseMoney(purchaseLedgerDB.getContractAmount());
                    accountExpenseDB.setExpenseDescribed("采购合同:" + purchaseLedgerDB.getPurchaseContractNumber());
                    accountExpenseDB.setExpenseMethod("0");
                    accountExpenseDB.setInvoiceNumber(purchaseLedgerDB.getPurchaseContractNumber());
                    accountExpenseService.updateById(accountExpenseDB);
                });
            }
            accountExpenseDB.setExpenseDate(purchaseLedgerDB.getEntryDate());
            accountExpenseDB.setExpenseType("0");
            accountExpenseDB.setSupplierName(purchaseLedgerDB.getSupplierName());
            accountExpenseDB.setExpenseMoney(purchaseLedgerDB.getContractAmount());
            accountExpenseDB.setExpenseDescribed("采购合同:" + purchaseLedgerDB.getPurchaseContractNumber());
            accountExpenseDB.setExpenseMethod("0");
            accountExpenseDB.setInvoiceNumber(purchaseLedgerDB.getPurchaseContractNumber());
            accountExpenseService.updateById(accountExpenseDB);
        }
        // 4. 处理子表数据
@@ -242,6 +251,7 @@
        }
        // 执行插入操作
        if (!insertList.isEmpty()) {
            List<Details> details = new ArrayList<>();
            for (SalesLedgerProduct salesLedgerProduct : insertList) {
                salesLedgerProduct.setType(type);
                Date entryDate = purchaseLedger.getEntryDate();
@@ -249,7 +259,17 @@
                LocalDateTime localDateTime = entryDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
                salesLedgerProduct.setRegisterDate(localDateTime);
                salesLedgerProductMapper.insert(salesLedgerProduct);
                Details details1 = new Details();
                details1.setId(salesLedgerProduct.getId().intValue());
                details1.setInboundQuantity(salesLedgerProduct.getQuantity());
                details1.setWarnNum(salesLedgerProduct.getWarnNum());
                details.add(details1);
            }
            // 新增采购入库
            ProcurementAddDto dto = new ProcurementAddDto();
            dto.setDetails(details);
            dto.setNickName("孙再红");
            procurementRecordService.add(dto);
        }
        // 计算总含税金额