From dce840653b78fc05a732c5c89773c74e15dbed09 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 08 十月 2026 17:41:27 +0800
Subject: [PATCH] 采购管理系统模块优化
---
src/main/java/com/ruoyi/basic/service/impl/SupplierServiceImpl.java | 135 +++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 129 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/ruoyi/basic/service/impl/SupplierServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/SupplierServiceImpl.java
index e23355d..c047570 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/SupplierServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/SupplierServiceImpl.java
@@ -1,25 +1,42 @@
package com.ruoyi.basic.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.dto.SupplierManageDto;
+import com.ruoyi.basic.dto.SupplierArchiveDetailVo;
+import com.ruoyi.basic.dto.SupplierArchiveSaveDto;
import com.ruoyi.basic.excel.SupplierManageExcelDto;
import com.ruoyi.basic.mapper.SupplierManageMapper;
+import com.ruoyi.basic.mapper.SupplierQualificationMapper;
+import com.ruoyi.basic.mapper.SupplierProductMapper;
+import com.ruoyi.basic.mapper.SupplierCooperationRecordMapper;
+import com.ruoyi.basic.pojo.SupplierQualification;
+import com.ruoyi.basic.pojo.SupplierProduct;
+import com.ruoyi.basic.pojo.SupplierCooperationRecord;
import com.ruoyi.basic.pojo.Customer;
import com.ruoyi.basic.pojo.SupplierManage;
import com.ruoyi.basic.service.ISupplierService;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
+import com.ruoyi.purchase.pojo.PurchaseLedger;
+import com.ruoyi.purchase.mapper.TicketRegistrationMapper;
+import com.ruoyi.purchase.pojo.TicketRegistration;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.stream.Collectors;
import java.util.ArrayList;
import java.util.List;
@@ -28,6 +45,12 @@
@Autowired
private SupplierManageMapper supplierMapper;
+ @Autowired
+ private PurchaseLedgerMapper purchaseLedgerMapper;
+ @Autowired private TicketRegistrationMapper ticketRegistrationMapper;
+ @Autowired private SupplierQualificationMapper qualificationMapper;
+ @Autowired private SupplierProductMapper productMapper;
+ @Autowired private SupplierCooperationRecordMapper cooperationMapper;
/**
* 渚涘簲鍟嗘柊澧�
@@ -36,12 +59,24 @@
*/
@Override
public void saveSupplier(SupplierManage supplierManage) {
+ Long tenantId = SecurityUtils.getLoginUser().getTenantId();
LambdaQueryWrapper<SupplierManage> supplierManageLambdaQueryWrapper = new LambdaQueryWrapper<>();
- supplierManageLambdaQueryWrapper.eq(SupplierManage::getSupplierName,supplierManage.getSupplierName());
+ supplierManageLambdaQueryWrapper.eq(SupplierManage::getSupplierName,supplierManage.getSupplierName())
+ .eq(SupplierManage::getTenantId, tenantId).eq(SupplierManage::getDeleteFlag, 0);
if (supplierMapper.selectCount(supplierManageLambdaQueryWrapper) > 0) {
throw new RuntimeException("渚涘簲鍟嗗凡瀛樺湪");
}
+ supplierManage.setTenantId(tenantId);
+ supplierManage.setDeleteFlag(0);
+ supplierManage.setCooperationStatus(supplierManage.getCooperationStatus() == null ? 1 : supplierManage.getCooperationStatus());
+ supplierManage.setQualificationStatus(supplierManage.getQualificationStatus() == null ? 0 : supplierManage.getQualificationStatus());
+ supplierManage.setMaintainUserId(SecurityUtils.getUserId().intValue());
+ supplierManage.setMaintainTime(LocalDate.now());
supplierMapper.insert(supplierManage);
+ if (supplierManage.getSupplierCode() == null || supplierManage.getSupplierCode().trim().isEmpty()) {
+ supplierManage.setSupplierCode(String.format("SUP%06d", supplierManage.getId()));
+ supplierMapper.updateById(supplierManage);
+ }
}
/**
@@ -51,9 +86,18 @@
*/
@Override
public int delSupplier(List<Integer> ids) {
- LambdaQueryWrapper<SupplierManage> delWrapper = new LambdaQueryWrapper<>();
- delWrapper.in(SupplierManage::getId, ids);
- return supplierMapper.delete(delWrapper);
+ Long tenantId=SecurityUtils.getLoginUser().getTenantId();
+ List<PurchaseLedger> purchaseLedgers = purchaseLedgerMapper.selectList(new QueryWrapper<PurchaseLedger>().lambda()
+ .in(PurchaseLedger::getSupplierId, ids).eq(PurchaseLedger::getTenantId,tenantId));
+ if (purchaseLedgers.size() > 0) {
+ throw new RuntimeException("渚涘簲鍟嗗凡瀛樺湪閲囪喘鍚堝悓");
+ }
+ int count=0;
+ for(Integer id:ids){
+ SupplierManage supplier=supplierDetail(id);
+ if(supplier!=null){ supplier.setDeleteFlag(1); supplier.setCooperationStatus(0); count+=supplierMapper.updateById(supplier); }
+ }
+ return count;
}
/**
@@ -63,7 +107,9 @@
*/
@Override
public SupplierManage supplierDetail(Integer id) {
- return supplierMapper.selectById(id);
+ return supplierMapper.selectOne(new LambdaQueryWrapper<SupplierManage>().eq(SupplierManage::getId,id)
+ .eq(SupplierManage::getTenantId, SecurityUtils.getLoginUser().getTenantId())
+ .eq(SupplierManage::getDeleteFlag,0));
}
/**
@@ -73,7 +119,11 @@
*/
@Override
public int supplierUpdate(SupplierManage supplierManage) {
- return supplierMapper.updateById(supplierManage);
+ SupplierManage current = supplierDetail(supplierManage.getId());
+ if (current == null) throw new RuntimeException("渚涘簲鍟嗕笉瀛樺湪");
+ supplierManage.setTenantId(current.getTenantId());
+ return supplierMapper.update(supplierManage, new LambdaQueryWrapper<SupplierManage>()
+ .eq(SupplierManage::getId, supplierManage.getId()).eq(SupplierManage::getTenantId,current.getTenantId()));
}
/**
@@ -84,6 +134,7 @@
*/
@Override
public IPage<SupplierManage> supplierListPage(Page page, SupplierManageDto supplierManageDto) {
+ supplierManageDto.setTenantId(SecurityUtils.getLoginUser().getTenantId());
return supplierMapper.supplierListPage(page,supplierManageDto);
}
@@ -94,6 +145,7 @@
*/
@Override
public void supplierExport(HttpServletResponse response, SupplierManageDto supplierManageDto) {
+ supplierManageDto.setTenantId(SecurityUtils.getLoginUser().getTenantId());
List<SupplierManageExcelDto> supplierManageList = supplierMapper.supplierExportList(supplierManageDto);
ExcelUtil<SupplierManageExcelDto> util = new ExcelUtil<SupplierManageExcelDto>(SupplierManageExcelDto.class);
util.exportExcel(response, supplierManageList, "渚涘簲鍟嗗鍑�");
@@ -123,4 +175,75 @@
}
return false;
}
+
+ @Override
+ public SupplierArchiveDetailVo supplierArchiveDetail(Integer id) {
+ SupplierManage supplier = supplierDetail(id);
+ if (supplier == null) throw new RuntimeException("渚涘簲鍟嗕笉瀛樺湪");
+ long supplierId = id.longValue();
+ long tenantId = supplier.getTenantId();
+ SupplierArchiveDetailVo result = new SupplierArchiveDetailVo();
+ result.setSupplier(supplier);
+ result.setQualifications(qualificationMapper.selectList(new LambdaQueryWrapper<SupplierQualification>()
+ .eq(SupplierQualification::getSupplierId,supplierId).eq(SupplierQualification::getTenantId,tenantId)
+ .eq(SupplierQualification::getDeleteFlag,0).orderByAsc(SupplierQualification::getExpiryDate)));
+ result.setProducts(productMapper.selectList(new LambdaQueryWrapper<SupplierProduct>()
+ .eq(SupplierProduct::getSupplierId,supplierId).eq(SupplierProduct::getTenantId,tenantId)
+ .eq(SupplierProduct::getDeleteFlag,0)));
+ result.setCooperationRecords(cooperationMapper.selectList(new LambdaQueryWrapper<SupplierCooperationRecord>()
+ .eq(SupplierCooperationRecord::getSupplierId,supplierId).eq(SupplierCooperationRecord::getTenantId,tenantId)
+ .eq(SupplierCooperationRecord::getDeleteFlag,0).orderByDesc(SupplierCooperationRecord::getCooperationDate)));
+ List<PurchaseLedger> purchases = purchaseLedgerMapper.selectList(new LambdaQueryWrapper<PurchaseLedger>()
+ .eq(PurchaseLedger::getSupplierId,supplierId).eq(PurchaseLedger::getTenantId,tenantId));
+ result.setPurchaseCount((long)purchases.size());
+ result.setPurchaseAmount(purchases.stream().map(PurchaseLedger::getContractAmount).filter(java.util.Objects::nonNull)
+ .reduce(BigDecimal.ZERO, BigDecimal::add));
+ result.setInvoicedAmount(ticketRegistrationMapper.selectList(new LambdaQueryWrapper<TicketRegistration>()
+ .eq(TicketRegistration::getSupplierId,supplierId).eq(TicketRegistration::getTenantId,tenantId)
+ .eq(TicketRegistration::getDeleteFlag,0)).stream().map(TicketRegistration::getInvoiceAmount)
+ .filter(java.util.Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+ return result;
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Integer saveArchive(SupplierArchiveSaveDto archive) {
+ if (archive == null || archive.getSupplier() == null) throw new RuntimeException("渚涘簲鍟嗕俊鎭笉鑳戒负绌�");
+ SupplierManage supplier = archive.getSupplier();
+ if (supplier.getId() == null) saveSupplier(supplier); else supplierUpdate(supplier);
+ long tenantId = SecurityUtils.getLoginUser().getTenantId();
+ long userId = SecurityUtils.getUserId();
+ long supplierId = supplier.getId().longValue();
+ qualificationMapper.delete(new LambdaQueryWrapper<SupplierQualification>().eq(SupplierQualification::getSupplierId,supplierId).eq(SupplierQualification::getTenantId,tenantId));
+ productMapper.delete(new LambdaQueryWrapper<SupplierProduct>().eq(SupplierProduct::getSupplierId,supplierId).eq(SupplierProduct::getTenantId,tenantId));
+ LocalDate nearest = null;
+ if (archive.getQualifications() != null) for (SupplierQualification item : archive.getQualifications()) {
+ item.setId(null); item.setSupplierId(supplierId); item.setTenantId(tenantId); item.setCreateUser(userId);
+ item.setCreateTime(LocalDateTime.now()); item.setUpdateTime(LocalDateTime.now()); item.setDeleteFlag(0);
+ item.setStatus(item.getStatus() == null ? 1 : item.getStatus()); qualificationMapper.insert(item);
+ if (item.getExpiryDate()!=null && (nearest==null || item.getExpiryDate().isBefore(nearest))) nearest=item.getExpiryDate();
+ }
+ if (archive.getProducts() != null) for (SupplierProduct item : archive.getProducts()) {
+ if (item.getProductName()==null || item.getProductName().trim().isEmpty()) continue;
+ item.setId(null); item.setSupplierId(supplierId); item.setTenantId(tenantId); item.setCreateUser(userId);
+ item.setCreateTime(LocalDateTime.now()); item.setUpdateTime(LocalDateTime.now()); item.setDeleteFlag(0);
+ item.setStatus(item.getStatus()==null?1:item.getStatus()); item.setCurrency(item.getCurrency()==null?"CNY":item.getCurrency()); productMapper.insert(item);
+ }
+ supplier.setQualificationExpiryDate(nearest);
+ supplier.setQualificationStatus(nearest==null?0:(nearest.isBefore(LocalDate.now())?3:(nearest.isBefore(LocalDate.now().plusDays(31))?2:1)));
+ if (archive.getProducts()!=null) supplier.setSuppliedProductsSummary(archive.getProducts().stream().map(SupplierProduct::getProductName)
+ .filter(java.util.Objects::nonNull).limit(5).collect(Collectors.joining("銆�")));
+ supplierUpdate(supplier);
+ return supplier.getId();
+ }
+
+ @Override
+ public void addCooperationRecord(Integer supplierId, SupplierCooperationRecord record) {
+ SupplierManage supplier = supplierDetail(supplierId);
+ if (supplier == null) throw new RuntimeException("渚涘簲鍟嗕笉瀛樺湪");
+ record.setId(null); record.setSupplierId(supplierId.longValue()); record.setTenantId(supplier.getTenantId());
+ record.setCreateUser(SecurityUtils.getUserId()); record.setUpdateUser(SecurityUtils.getUserId());
+ record.setCreateTime(LocalDateTime.now()); record.setUpdateTime(LocalDateTime.now()); record.setDeleteFlag(0);
+ cooperationMapper.insert(record);
+ }
}
--
Gitblit v1.9.3