From a1454f4b28db363ca4c4a6ea182d3aab95dc9518 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期五, 24 四月 2026 11:17:50 +0800
Subject: [PATCH] fix(sales): 修正新增销售订单下发生产计划
---
src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java | 145 +++++++++++++++++++++++++++++++----------------
1 files changed, 95 insertions(+), 50 deletions(-)
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
index e500744..700836d 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -1,29 +1,22 @@
package com.ruoyi.purchase.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.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.account.pojo.AccountExpense;
-import com.ruoyi.account.pojo.AccountIncome;
-import com.ruoyi.account.service.AccountExpenseService;
-import com.ruoyi.account.service.AccountIncomeService;
import com.ruoyi.approve.pojo.ApproveProcess;
import com.ruoyi.approve.service.impl.ApproveProcessServiceImpl;
-import com.ruoyi.approve.vo.ApproveProcessVO;
+import com.ruoyi.approve.bean.vo.ApproveProcessVO;
import com.ruoyi.basic.mapper.ProductMapper;
import com.ruoyi.basic.mapper.ProductModelMapper;
import com.ruoyi.basic.mapper.SupplierManageMapper;
-import com.ruoyi.basic.pojo.Customer;
import com.ruoyi.basic.pojo.Product;
import com.ruoyi.basic.pojo.ProductModel;
import com.ruoyi.basic.pojo.SupplierManage;
import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.exception.base.BaseException;
-import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
@@ -38,18 +31,32 @@
import com.ruoyi.purchase.dto.PurchaseLedgerDto;
import com.ruoyi.purchase.dto.PurchaseLedgerImportDto;
import com.ruoyi.purchase.dto.PurchaseLedgerProductImportDto;
-import com.ruoyi.purchase.mapper.*;
-import com.ruoyi.purchase.pojo.*;
+import com.ruoyi.purchase.mapper.PaymentRegistrationMapper;
+import com.ruoyi.purchase.mapper.ProductRecordMapper;
+import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
+import com.ruoyi.purchase.mapper.TicketRegistrationMapper;
+import com.ruoyi.purchase.pojo.PaymentRegistration;
+import com.ruoyi.purchase.pojo.ProductRecord;
+import com.ruoyi.purchase.pojo.PurchaseLedger;
+import com.ruoyi.purchase.pojo.TicketRegistration;
import com.ruoyi.purchase.service.IPurchaseLedgerService;
-import com.ruoyi.quality.mapper.*;
-import com.ruoyi.quality.pojo.*;
-import com.ruoyi.sales.dto.SalesLedgerImportDto;
-import com.ruoyi.sales.dto.SalesLedgerProductImportDto;
-import com.ruoyi.sales.mapper.*;
+import com.ruoyi.quality.mapper.QualityInspectMapper;
+import com.ruoyi.quality.mapper.QualityInspectParamMapper;
+import com.ruoyi.quality.mapper.QualityTestStandardMapper;
+import com.ruoyi.quality.mapper.QualityTestStandardParamMapper;
+import com.ruoyi.quality.pojo.QualityInspect;
+import com.ruoyi.quality.pojo.QualityInspectParam;
+import com.ruoyi.quality.pojo.QualityTestStandard;
+import com.ruoyi.quality.pojo.QualityTestStandardParam;
+import com.ruoyi.sales.mapper.CommonFileMapper;
+import com.ruoyi.sales.mapper.InvoiceRegistrationProductMapper;
+import com.ruoyi.sales.mapper.SalesLedgerMapper;
+import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
import com.ruoyi.sales.pojo.CommonFile;
import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
import com.ruoyi.sales.pojo.SalesLedger;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
+import com.ruoyi.sales.service.impl.CommonFileServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
@@ -83,51 +90,33 @@
* @date 2025-05-09
*/
@Service
-@RequiredArgsConstructor
@Slf4j
+@RequiredArgsConstructor
public class PurchaseLedgerServiceImpl extends ServiceImpl<PurchaseLedgerMapper, PurchaseLedger> implements IPurchaseLedgerService {
- private final AccountExpenseService accountExpenseService;
- private final PurchaseLedgerMapper purchaseLedgerMapper;
+ private final PurchaseLedgerMapper purchaseLedgerMapper;
private final SalesLedgerMapper salesLedgerMapper;
private final SalesLedgerProductMapper salesLedgerProductMapper;
-
private final SysUserMapper userMapper;
-
private final TempFileMapper tempFileMapper;
-
private final CommonFileMapper commonFileMapper;
-
private final SupplierManageMapper supplierManageMapper;
-
private final ProductMapper productMapper;
-
private final ProductModelMapper productModelMapper;
-
private final SysUserMapper sysUserMapper;
-
private final TicketRegistrationMapper ticketRegistrationMapper;
-
private final ProductRecordMapper productRecordMapper;
-
private final PaymentRegistrationMapper paymentRegistrationMapper;
-
private final InvoiceRegistrationProductMapper invoiceRegistrationProductMapper;
-
private final StringRedisTemplate redisTemplate;
private final QualityInspectMapper qualityInspectMapper;
- private final QualityTestStandardBindingMapper qualityTestStandardBindingMapper;
+ private final CommonFileServiceImpl commonFileService;
private final QualityTestStandardParamMapper qualityTestStandardParamMapper;
private final QualityTestStandardMapper qualityTestStandardMapper;
private final QualityInspectParamMapper qualityInspectParamMapper;
-
private final ApproveProcessServiceImpl approveProcessService;
-
private final ProcurementRecordMapper procurementRecordStorageMapper;
- private final PurchaseLedgerTemplateMapper purchaseLedgerTemplateMapper;
-
- private final SalesLedgerProductTemplateMapper salesLedgerProductTemplateMapper;
@Value("${file.upload-dir}")
private String uploadDir;
@@ -137,21 +126,35 @@
if (StringUtils.isNotBlank(purchaseLedger.getPurchaseContractNumber())) {
queryWrapper.like(PurchaseLedger::getPurchaseContractNumber, purchaseLedger.getPurchaseContractNumber());
}
+ if(purchaseLedger.getSupplierId()!=null){
+ queryWrapper.eq(PurchaseLedger::getSupplierId, purchaseLedger.getSupplierId());
+ }
+ if (purchaseLedger.getApprovalStatus() != null) {
+ queryWrapper.eq(PurchaseLedger::getApprovalStatus, purchaseLedger.getApprovalStatus());
+ }
return purchaseLedgerMapper.selectList(queryWrapper);
}
@Override
@Transactional(rollbackFor = Exception.class)
public int addOrEditPurchase(PurchaseLedgerDto purchaseLedgerDto) throws Exception {
-
+ PurchaseLedger purchaseLedger = new PurchaseLedger();
SalesLedger salesLedger = salesLedgerMapper.selectById(purchaseLedgerDto.getSalesLedgerId());
//褰曞叆浜�
SysUser sysUser = userMapper.selectUserById(purchaseLedgerDto.getRecorderId());
+ if (ObjectUtils.isNotEmpty(sysUser)) {
+ purchaseLedger.setRecorderName(sysUser.getNickName());
+ purchaseLedger.setPhoneNumber(sysUser.getPhonenumber());
+ }else {
+ purchaseLedger.setRecorderName(SecurityUtils.getLoginUser().getNickName());
+ SysUser sysUser1 = userMapper.selectUserById(SecurityUtils.getUserId());
+ purchaseLedger.setPhoneNumber(sysUser1.getPhonenumber());
+ }
SupplierManage supplierManage = supplierManageMapper.selectById(purchaseLedgerDto.getSupplierId());
// DTO杞珽ntity
- PurchaseLedger purchaseLedger = new PurchaseLedger();
+
BeanUtils.copyProperties(purchaseLedgerDto, purchaseLedger);
LoginUser loginUser = SecurityUtils.getLoginUser();
if (ObjectUtils.isNotEmpty(loginUser) && null != loginUser.getTenantId()) {
@@ -161,8 +164,8 @@
purchaseLedger.setSalesLedgerId(ObjectUtils.isNotEmpty(salesLedger) ? salesLedger.getId() : -1);
purchaseLedger.setSupplierName(supplierManage.getSupplierName());
purchaseLedger.setRecorderId(purchaseLedgerDto.getRecorderId());
- purchaseLedger.setRecorderName(sysUser.getNickName());
- purchaseLedger.setPhoneNumber(sysUser.getPhonenumber());
+
+ purchaseLedger.setApprovalStatus(1);
// 3. 鏂板鎴栨洿鏂颁富琛�
if (purchaseLedger.getId() == null) {
purchaseLedgerMapper.insert(purchaseLedger);
@@ -186,15 +189,15 @@
if (productList != null && !productList.isEmpty()) {
handleSalesLedgerProducts(purchaseLedger.getId(), productList, purchaseLedgerDto.getType());
}
- //鏂板鍘熸潗鏂欐楠�
- if (productList != null) {
- for (SalesLedgerProduct saleProduct : productList) {
- //鏄惁鎺ㄩ�佽川妫�锛屽鏋渢rue灏辨坊鍔�
- if (saleProduct.getIsChecked()) {
- addQualityInspect(purchaseLedger, saleProduct);
- }
- }
- }
+ //鏂板鍘熸潗鏂欐楠� 瀹℃壒涔嬪悗鎵嶇敓鎴愭楠�
+// if (productList != null) {
+// for (SalesLedgerProduct saleProduct : productList) {
+// //鏄惁鎺ㄩ�佽川妫�锛屽鏋渢rue灏辨坊鍔�
+// if (saleProduct.getIsChecked()) {
+// addQualityInspect(purchaseLedger, saleProduct);
+// }
+// }
+// }
// 5. 杩佺Щ涓存椂鏂囦欢鍒版寮忕洰褰�
if (purchaseLedgerDto.getTempFileIds() != null && !purchaseLedgerDto.getTempFileIds().isEmpty()) {
migrateTempFilesToFormal(purchaseLedger.getId(), purchaseLedgerDto.getTempFileIds());
@@ -202,7 +205,8 @@
return 1;
}
- private void addQualityInspect(PurchaseLedger purchaseLedger, SalesLedgerProduct saleProduct) {
+
+ public void addQualityInspect(PurchaseLedger purchaseLedger, SalesLedgerProduct saleProduct) {
QualityInspect qualityInspect = new QualityInspect();
qualityInspect.setInspectType(0);
qualityInspect.setSupplier(purchaseLedger.getSupplierName());
@@ -397,6 +401,12 @@
if (ids == null || ids.length == 0) {
throw new BaseException("璇烽�変腑鑷冲皯涓�鏉℃暟鎹�");
}
+ for (Long id : ids) {
+ PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(id);
+ if (purchaseLedger.getApprovalStatus().equals(3)) {
+ throw new BaseException(purchaseLedger.getPurchaseContractNumber()+"宸茬粡瀹℃壒閫氳繃锛屼笉鍏佽鍒犻櫎");
+ }
+ }
// 鎵归噺鍒犻櫎鍏宠仈鐨勯噰璐叆搴撹褰�
LambdaQueryWrapper<SalesLedgerProduct> salesLedgerProductQueryWrapper = new LambdaQueryWrapper<>();
salesLedgerProductQueryWrapper.in(SalesLedgerProduct::getSalesLedgerId, ids)
@@ -430,6 +440,7 @@
//鎵归噺鍒犻櫎妫�楠屾爣鍑�
LambdaQueryWrapper<QualityInspect> materialInspectLambdaQueryWrapper = new LambdaQueryWrapper<>();
materialInspectLambdaQueryWrapper.in(QualityInspect::getPurchaseLedgerId, ids);
+
List<QualityInspect> qualityInspects = qualityInspectMapper.selectList(materialInspectLambdaQueryWrapper);
qualityInspects.stream().forEach(qualityInspect -> {
if (ObjectUtils.isNotEmpty(qualityInspect.getInspectState())&&qualityInspect.getInspectState().equals(1)) {
@@ -461,6 +472,8 @@
}
//鎵归噺鍒犻櫎鍘熸潗鏂欐楠屾暟鎹�
qualityInspectMapper.delete(materialInspectLambdaQueryWrapper);
+ //鍒犻櫎闄勪欢
+ commonFileService.deleteByBusinessIds(Arrays.asList(ids), 2);
// 鎵归噺鍒犻櫎閲囪喘鍙拌处
return purchaseLedgerMapper.deleteBatchIds(Arrays.asList(ids));
}
@@ -638,6 +651,12 @@
List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>().in(SysUser::getNickName,
salesLedgerImportDtoList.stream().map(PurchaseLedgerImportDto::getRecorderName).collect(Collectors.toList())));
for (PurchaseLedgerImportDto salesLedgerImportDto : salesLedgerImportDtoList) {
+ PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectOne(new LambdaQueryWrapper<PurchaseLedger>()
+ .eq(PurchaseLedger::getPurchaseContractNumber, salesLedgerImportDto.getPurchaseContractNumber())
+ .last("limit 1"));
+ if(purchaseLedger != null){
+ continue;
+ }
PurchaseLedger salesLedger = new PurchaseLedger();
BeanUtils.copyProperties(salesLedgerImportDto, salesLedger);
// 閫氳繃渚涘簲鍟嗗悕绉版煡璇D
@@ -724,6 +743,32 @@
return AjaxResult.success("瀵煎叆澶辫触");
}
+ @Override
+ public PurchaseLedgerDto getPurchaseByCode(PurchaseLedgerDto purchaseLedgerDto) {
+ // 1. 鏌ヨ涓昏〃
+ PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectOne(new LambdaQueryWrapper<PurchaseLedger>()
+ .eq(PurchaseLedger::getPurchaseContractNumber, purchaseLedgerDto.getPurchaseContractNumber())
+ .last("LIMIT 1"));
+ if (purchaseLedger == null) {
+ throw new BaseException("閲囪喘鍙拌处涓嶅瓨鍦�");
+ }
+
+ // 2. 鏌ヨ瀛愯〃
+ LambdaQueryWrapper<SalesLedgerProduct> productWrapper = new LambdaQueryWrapper<>();
+ productWrapper.eq(SalesLedgerProduct::getSalesLedgerId, purchaseLedger.getId())
+ .eq(SalesLedgerProduct::getType, 2);
+ List<SalesLedgerProduct> products = salesLedgerProductMapper.selectList(productWrapper);
+
+ // 4. 杞崲 DTO
+ PurchaseLedgerDto resultDto = new PurchaseLedgerDto();
+ BeanUtils.copyProperties(purchaseLedger, resultDto);
+ if (!products.isEmpty()) {
+ resultDto.setHasChildren(true);
+ resultDto.setProductData(products);
+ }
+ return resultDto;
+ }
+
public void addApproveByPurchase(LoginUser loginUser,PurchaseLedger purchaseLedger) throws Exception {
ApproveProcessVO approveProcessVO = new ApproveProcessVO();
approveProcessVO.setApproveType(5);
--
Gitblit v1.9.3