From 214f90a39cdf2d401f9eb50084d062dab878a249 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期三, 21 一月 2026 17:42:49 +0800
Subject: [PATCH] yys 1.车俩管理开发 2.调整生产管控流
---
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java | 125 ++++++++++++++++++++++++++++-------------
1 files changed, 86 insertions(+), 39 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
index 67d8bba..cf80649 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
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;
@@ -15,8 +16,10 @@
import com.ruoyi.basic.pojo.ProductModel;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
+import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.production.controller.ProductWorkOrderController;
import com.ruoyi.production.dto.ProductStructureDto;
@@ -28,6 +31,8 @@
import com.ruoyi.project.system.mapper.SysUserMapper;
import com.ruoyi.quality.mapper.*;
import com.ruoyi.quality.pojo.*;
+import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
+import com.ruoyi.sales.pojo.SalesLedgerProduct;
import io.swagger.models.auth.In;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@@ -43,6 +48,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
@Service
@AllArgsConstructor
@@ -50,6 +56,7 @@
public class ProductionProductMainServiceImpl extends ServiceImpl<ProductionProductMainMapper, ProductionProductMain> implements ProductionProductMainService {
private final ProcurementRecordOutMapper procurementRecordOutMapper;
+ private ProcurementRecordMapper procurementRecordMapper;
private ProductionProductMainMapper productionProductMainMapper;
private ProductWorkOrderController productWorkOrderController;
@@ -62,6 +69,8 @@
private ProductionProductOutputMapper productionProductOutputMapper;
private ProcessRouteItemMapper processRouteItemMapper;
+
+ private SalesLedgerProductMapper salesLedgerProductMapper;
private ProductModelMapper productModelMapper;
@@ -155,6 +164,7 @@
for (ProductStructureDto productStructureDto : productStructureDtos) {
ProductModel productModel1 = productModelMapper.selectById(productStructureDto.getProductModelId());
Product product = productMapper.selectById(productModel1.getProductId());
+ // 鏌ヨ浜у搧搴撳瓨
BigDecimal stockQuantity = stockUtils.getStockQuantity(productModel1.getId()).get("stockQuantity");
if (!(stockQuantity.compareTo(BigDecimal.ZERO) > 0)) {
throw new RuntimeException(product.getProductName()+"浜у搧鐨�"+productModel1.getModel() + "鐨勮鏍煎簱瀛樹负0");
@@ -162,6 +172,11 @@
if (stockQuantity.compareTo(productStructureDto.getUnitQuantity().multiply(dto.getQuantity())) < 0) {
throw new RuntimeException(product.getProductName()+"浜у搧鐨�"+productModel1.getModel() + "鐨勮鏍煎簱瀛樹笉瓒�");
}
+ // 鏌ヨ閲囪喘浜у搧
+ List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(new LambdaQueryWrapper<SalesLedgerProduct>()
+ .eq(SalesLedgerProduct::getProductModelId, productStructureDto.getProductModelId())
+ .eq(SalesLedgerProduct::getType, 2));
+
ProductionProductInput productionProductInput = new ProductionProductInput();
productionProductInput.setProductModelId(productStructureDto.getProductModelId());
productionProductInput.setQuantity(productStructureDto.getUnitQuantity().multiply(dto.getQuantity()));
@@ -172,16 +187,49 @@
LocalDate now = LocalDate.now();
ProcurementRecordOut procurementRecordOut1 = procurementRecordOutMapper.selectCode(dateFormat.format(now));
Long aLong = procurementRecordOut1 == null ? 1L : Long.valueOf(procurementRecordOut1.getCode().split("LS" + dateFormat.format(now))[1]);
- ProcurementRecordOut.ProcurementRecordOutBuilder procurementRecordOut = ProcurementRecordOut.builder()
- .procurementRecordStorageId(0)
- .code("LS" + dateFormat.format(now) + String.format("%03d", aLong + 1))
- .salesLedgerProductId(productionProductMain.getId())//鍏宠仈鎶ュ伐浜у嚭
- .inboundBatches(aLong.equals(0L) ? "绗�1鎵规" : "绗�" + (aLong + 1) + "鎵规")
- .inboundNum(productionProductInput.getQuantity())
- .type(4)
- .createBy(user.getNickName())
- .productModelId(productModel1.getId());
- procurementRecordOutMapper.insert(procurementRecordOut.build());
+ // 鏌ヨ閲囪喘鍏ュ簱璁板綍
+ List<ProcurementRecordStorage> procurementRecordStorages = procurementRecordMapper.selectList(new LambdaQueryWrapper<ProcurementRecordStorage>()
+ .in(ProcurementRecordStorage::getSalesLedgerProductId, salesLedgerProducts.stream()
+ .map(SalesLedgerProduct::getId)
+ .collect(Collectors.toList()))
+ .orderByDesc(ProcurementRecordStorage::getInboundNum));
+ if(CollectionUtils.isNotEmpty(procurementRecordStorages)) {
+ // 鐢熶骇鎵i櫎閲囪喘搴撳瓨鍘熸枡
+ BigDecimal quantity = productionProductInput.getQuantity();
+ int i = 0;
+ while (quantity.compareTo(BigDecimal.ZERO) > 0){
+ ProcurementRecordOut.ProcurementRecordOutBuilder procurementRecordOut = ProcurementRecordOut.builder()
+ .procurementRecordStorageId(procurementRecordStorages.get(i).getId())
+ .code("LS" + dateFormat.format(now) + String.format("%03d", aLong + 1))
+ .salesLedgerProductId(productionProductMain.getId())//鍏宠仈鎶ュ伐浜у嚭
+ .inboundBatches(aLong.equals(0L) ? "绗�1鎵规" : "绗�" + (aLong + 1) + "鎵规")
+ .type(1)
+ .createBy(user.getNickName())
+ .productModelId(productModel1.getId());
+
+ if(quantity.compareTo(procurementRecordStorages.get(i).getInboundNum()) >= 0){
+ // 涓嬫枡鏁伴噺澶т簬绛変簬閲囪喘鍏ュ簱鏁伴噺锛屽垯鍑哄簱鏁伴噺涓洪噰璐叆搴撴暟閲忥紝骞剁户缁嚭搴撲笅涓�鏉¤褰�
+ procurementRecordOut.inboundNum(procurementRecordStorages.get(i).getInboundNum());
+ quantity = quantity.subtract(procurementRecordStorages.get(i).getInboundNum());
+ }else{
+ procurementRecordOut.inboundNum(quantity);
+ quantity = BigDecimal.ZERO;
+ }
+ procurementRecordOutMapper.insert(procurementRecordOut.build());
+ i++;
+ }
+ }else{
+ ProcurementRecordOut.ProcurementRecordOutBuilder procurementRecordOut = ProcurementRecordOut.builder()
+ .procurementRecordStorageId(0)
+ .code("LS" + dateFormat.format(now) + String.format("%03d", aLong + 1))
+ .salesLedgerProductId(productionProductMain.getId())//鍏宠仈鎶ュ伐浜у嚭
+ .inboundBatches(aLong.equals(0L) ? "绗�1鎵规" : "绗�" + (aLong + 1) + "鎵规")
+ .inboundNum(productionProductInput.getQuantity())
+ .type(4)
+ .createBy(user.getNickName())
+ .productModelId(productModel1.getId());
+ procurementRecordOutMapper.insert(procurementRecordOut.build());
+ }
}
/*鏂板鎶ュ伐浜у嚭琛�*/
ProductionProductOutput productionProductOutput = new ProductionProductOutput();
@@ -191,38 +239,37 @@
productionProductOutputMapper.insert(productionProductOutput);
//瀵瑰簲鐨勮繃绋嬫鎴栬�呭嚭鍘傛
List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()));
- int inspectType = 1;
if (productProcessRouteItem.getDragSort()==productProcessRouteItems.size()){
//鏈�鍚庝竴閬撳伐搴忕敓鎴愬嚭鍘傛
- inspectType = 2;
+ Product product = productMapper.selectById(productModel.getProductId());
+ QualityInspect qualityInspect = new QualityInspect();
+ qualityInspect.setProductId(product.getId());
+ qualityInspect.setProductName(product.getProductName());
+ qualityInspect.setModel(productModel.getModel());
+ qualityInspect.setUnit(productModel.getUnit());
+ qualityInspect.setQuantity(dto.getQuantity());
+ qualityInspect.setProcess(productProcess.getName());
+ qualityInspect.setInspectState(0);
+ qualityInspect.setInspectType(2); // 鍘绘帀鑷姩杩涘叆杩囩▼妫�楠岄�昏緫
+ qualityInspect.setProductMainId(productionProductMain.getId());
+ qualityInspect.setProductModelId(productModel.getId());
+ qualityInspectMapper.insert(qualityInspect);
+ List<QualityTestStandardBinding> qualityTestStandardBindings = qualityTestStandardBindingMapper.selectList(
+ new LambdaQueryWrapper<QualityTestStandardBinding>()
+ .eq(QualityTestStandardBinding::getProductId, product.getId()));
+ if (qualityTestStandardBindings.size()>0){
+ qualityTestStandardParamMapper.selectList(Wrappers.<QualityTestStandardParam>lambdaQuery()
+ .eq(QualityTestStandardParam::getTestStandardId,qualityTestStandardBindings.get(0).getTestStandardId()))
+ .forEach(qualityTestStandardParam -> {
+ QualityInspectParam param = new QualityInspectParam();
+ BeanUtils.copyProperties(qualityTestStandardParam, param);
+ param.setId(null);
+ param.setInspectId(qualityInspect.getId());
+ qualityInspectParamMapper.insert(param);
+ });
+ }
}
- Product product = productMapper.selectById(productModel.getProductId());
- QualityInspect qualityInspect = new QualityInspect();
- qualityInspect.setProductId(product.getId());
- qualityInspect.setProductName(product.getProductName());
- qualityInspect.setModel(productModel.getModel());
- qualityInspect.setUnit(productModel.getUnit());
- qualityInspect.setQuantity(dto.getQuantity());
- qualityInspect.setProcess(productProcess.getName());
- qualityInspect.setInspectState(0);
- qualityInspect.setInspectType(inspectType);
- qualityInspect.setProductMainId(productionProductMain.getId());
- qualityInspect.setProductModelId(productModel.getId());
- qualityInspectMapper.insert(qualityInspect);
- List<QualityTestStandardBinding> qualityTestStandardBindings = qualityTestStandardBindingMapper.selectList(
- new LambdaQueryWrapper<QualityTestStandardBinding>()
- .eq(QualityTestStandardBinding::getProductId, product.getId()));
- if (qualityTestStandardBindings.size()>0){
- qualityTestStandardParamMapper.selectList(Wrappers.<QualityTestStandardParam>lambdaQuery()
- .eq(QualityTestStandardParam::getTestStandardId,qualityTestStandardBindings.get(0).getTestStandardId()))
- .forEach(qualityTestStandardParam -> {
- QualityInspectParam param = new QualityInspectParam();
- BeanUtils.copyProperties(qualityTestStandardParam, param);
- param.setId(null);
- param.setInspectId(qualityInspect.getId());
- qualityInspectParamMapper.insert(param);
- });
- }
+
/*鏇存柊宸ュ崟鍜岀敓浜ц鍗�*/
ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(dto.getWorkOrderId());
productWorkOrder.setCompleteQuantity(productWorkOrder.getCompleteQuantity().add(dto.getQuantity()));
--
Gitblit v1.9.3