From b28173836631e9ecb1aafbaa5786c0383462208e Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 12 三月 2026 15:09:57 +0800
Subject: [PATCH] 1.生产成品添加审核流程,半成品不审核
---
src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java | 12 ++
src/main/java/com/ruoyi/stock/service/StockInventoryService.java | 2
src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java | 3
src/main/resources/mapper/stock/StockOutRecordMapper.xml | 3
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java | 18 ++
src/main/resources/mapper/stock/StockInventoryMapper.xml | 46 +++++++--
src/main/resources/mapper/stock/StockInRecordMapper.xml | 25 ++--
src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java | 36 ++++++
src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java | 2
src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java | 24 +++-
src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java | 2
src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java | 26 +++++
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 35 +++++-
src/main/java/com/ruoyi/production/pojo/ProductProcessRouteItem.java | 3
src/main/resources/mapper/stock/StockUninventoryMapper.xml | 23 ++-
src/main/java/com/ruoyi/stock/service/StockUninventoryService.java | 2
src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java | 30 ++++++
17 files changed, 240 insertions(+), 52 deletions(-)
diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
index de7e81b..97a9912 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -217,7 +217,7 @@
purchaseLedgerServiceImpl.addQualityInspect(purchaseLedger, salesLedgerProduct);
} else {
//鐩存帴鍏ュ簱
- stockUtils.addStock(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockInQualifiedRecordTypeEnum.PURCHASE_STOCK_IN.getCode(), purchaseLedger.getId());
+ stockUtils.addStockNoReview(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockInQualifiedRecordTypeEnum.PURCHASE_STOCK_IN.getCode(), purchaseLedger.getId());
}
}
} else if (status.equals(3)) {
diff --git a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
index 3db55b2..1c6b9f5 100644
--- a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
+++ b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
@@ -29,7 +29,7 @@
private final StockOutRecordService stockOutRecordService;
/**
- * 涓嶅悎鏍煎叆搴�
+ * 涓嶅悎鏍煎叆搴擄紙瀹℃牳锛�
* @param productModelId
* @param quantity
* @param recordType
@@ -42,6 +42,22 @@
stockUninventoryDto.setQualitity(quantity);
stockUninventoryDto.setProductModelId(productModelId);
stockUninventoryService.addStockUninventory(stockUninventoryDto);
+ }
+
+ /**
+ * 涓嶅悎鏍煎叆搴擄紙涓嶅鏍革級
+ * @param productModelId
+ * @param quantity
+ * @param recordType
+ * @param recordId
+ */
+ public void addUnStockNoReview(Long productModelId, BigDecimal quantity, String recordType,Long recordId) {
+ StockUninventoryDto stockUninventoryDto = new StockUninventoryDto();
+ stockUninventoryDto.setRecordId(recordId);
+ stockUninventoryDto.setRecordType(String.valueOf(recordType));
+ stockUninventoryDto.setQualitity(quantity);
+ stockUninventoryDto.setProductModelId(productModelId);
+ stockUninventoryService.addStockUninventoryNoReview(stockUninventoryDto);
}
/**
@@ -61,7 +77,7 @@
}
/**
- * 鍚堟牸鍏ュ簱
+ * 鍚堟牸鍏ュ簱锛堝鏍革級
* @param productModelId
* @param quantity
* @param recordType
@@ -77,6 +93,22 @@
}
/**
+ * 鍚堟牸鍏ュ簱锛堜笉瀹℃牳锛�
+ * @param productModelId
+ * @param quantity
+ * @param recordType
+ * @param recordId
+ */
+ public void addStockNoReview(Long productModelId, BigDecimal quantity, String recordType,Long recordId) {
+ StockInventoryDto stockInventoryDto = new StockInventoryDto();
+ stockInventoryDto.setRecordId(recordId);
+ stockInventoryDto.setRecordType(String.valueOf(recordType));
+ stockInventoryDto.setQualitity(quantity);
+ stockInventoryDto.setProductModelId(productModelId);
+ stockInventoryService.addstockInventoryNoReview(stockInventoryDto);
+ }
+
+ /**
* 鍚堟牸鍑哄簱
* @param productModelId
* @param quantity
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductProcessRouteItem.java b/src/main/java/com/ruoyi/production/pojo/ProductProcessRouteItem.java
index d84a7ce..4341ed8 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductProcessRouteItem.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductProcessRouteItem.java
@@ -6,6 +6,9 @@
import java.time.LocalDateTime;
+/**
+ * 宸ヨ壓璺嚎璇︽儏
+ */
@Data
@TableName("product_process_route_item")
public class ProductProcessRouteItem {
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 13d7ccb..b3f75b0 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -119,7 +119,6 @@
Object maxNoObj = result.get("maxNo");
if (maxNoObj != null) {
String lastNo = maxNoObj.toString();
- System.out.println("lastNo: " + lastNo);
if (lastNo.startsWith(datePrefix)) {
try {
String seqStr = lastNo.substring(datePrefix.length());
@@ -167,10 +166,10 @@
productionProductOutputMapper.insert(productionProductOutput);
//鍚堟牸鏁伴噺=鎶ュ伐鏁伴噺-鎶ュ簾鏁伴噺
BigDecimal productQty = productionProductOutput.getQuantity().subtract(productionProductOutput.getScrapQty());
+ List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()));
//鍙湁鍚堟牸鏁伴噺>0鎵嶈兘澧炲姞鐩稿簲鏁版嵁
if (productQty.compareTo(BigDecimal.ZERO) > 0) {
/*鏂板璐ㄦ*/
- List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()));
if (productProcessRouteItem.getIsQuality()) {
//瀵瑰簲鐨勮繃绋嬫鎴栬�呭嚭鍘傛
int inspectType = 1;
@@ -209,7 +208,14 @@
}
}else {
//鐩存帴鍏ュ簱
- stockUtils.addStock(productProcessRouteItem.getProductModelId(), productQty, StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId());
+ //鏈�鍚庝竴閬撳伐搴忎负鎴愬搧
+ if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) {
+ //鎴愬搧瀹℃牳
+ stockUtils.addStock(productProcessRouteItem.getProductModelId(), productQty, StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId());
+ }else {
+ //鍗婃垚鍝佷笉瀹℃牳
+ stockUtils.addStockNoReview(productProcessRouteItem.getProductModelId(), productQty, StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId());
+ }
}
/*鏇存柊宸ュ崟鍜岀敓浜ц鍗�*/
ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(dto.getWorkOrderId());
@@ -250,7 +256,11 @@
//濡傛灉鎶ュ簾鏁伴噺>0,闇�瑕佽繘鍏ユ姤搴熺殑搴撳瓨
if (ObjectUtils.isNotEmpty(dto.getScrapQty())) {
if (dto.getScrapQty().compareTo(BigDecimal.ZERO) > 0) {
- stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
+ if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()){
+ stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
+ }else {
+ stockUtils.addUnStockNoReview(productModel.getId(), dto.getScrapQty(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
+ }
}
}
return true;
diff --git a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
index ed6c4cf..5bccd00 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -96,8 +96,16 @@
qualityUnqualified.setInspectId(qualityInspect.getId());
qualityUnqualifiedMapper.insert(qualityUnqualified);
} else {
- //鍚堟牸鐩存帴鍏ュ簱
- stockUtils.addStock(qualityInspect.getProductModelId(), qualityInspect.getQuantity(), StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(), qualityInspect.getId());
+ //鍚堟牸鍏ュ簱
+ Integer inspectType = qualityInspect.getInspectType();
+ //鐢熶骇鎴愬搧娣诲姞瀹℃牳娴佺▼锛屽崐鎴愬搧涓嶅鏍�
+ if (inspectType != null && inspectType.equals(2)) {
+ stockUtils.addStock(qualityInspect.getProductModelId(), qualityInspect.getQuantity(),
+ StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(), qualityInspect.getId());
+ } else {
+ stockUtils.addStockNoReview(qualityInspect.getProductModelId(), qualityInspect.getQuantity(),
+ StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(), qualityInspect.getId());
+ }
}
qualityInspect.setInspectState(1);//宸叉彁浜�
return qualityInspectMapper.updateById(qualityInspect);
diff --git a/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java b/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
index 1650690..c1fdff7 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
@@ -8,7 +8,6 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
-import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
@@ -17,7 +16,10 @@
import com.ruoyi.production.mapper.ProductProcessRouteMapper;
import com.ruoyi.production.mapper.ProductWorkOrderMapper;
import com.ruoyi.production.mapper.ProductionProductMainMapper;
-import com.ruoyi.production.pojo.*;
+import com.ruoyi.production.pojo.ProductOrder;
+import com.ruoyi.production.pojo.ProductProcessRoute;
+import com.ruoyi.production.pojo.ProductProcessRouteItem;
+import com.ruoyi.production.pojo.ProductWorkOrder;
import com.ruoyi.production.service.ProductOrderService;
import com.ruoyi.quality.mapper.QualityUnqualifiedMapper;
import com.ruoyi.quality.pojo.QualityInspect;
@@ -127,11 +129,21 @@
break;
case "鎶ュ簾":
//璋冪敤涓嶅悎鏍煎簱瀛樻帴鍙� 鍏ヤ笉鍚堟牸搴�
- stockUtils.addUnStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId());
+ // 2 鏄垚鍝�-闇�瑕佸鏍� 1 鏄崐鎴愬搧-涓嶉渶瑕佸鏍�
+ if (qualityInspect.getInspectType().equals(2)) {
+ stockUtils.addUnStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId());
+ } else {
+ stockUtils.addUnStockNoReview(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId());
+ }
break;
case "璁╂鏀捐":
//璋冪敤鎻愪氦鍚堟牸鐨勬帴鍙�
- stockUtils.addStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId());
+ // 2 鏄垚鍝�-闇�瑕佸鏍� 1 鏄崐鎴愬搧-涓嶉渶瑕佸鏍�
+ if (qualityInspect.getInspectType().equals(2)) {
+ stockUtils.addStockNoReview(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId());
+ } else {
+ stockUtils.addStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId());
+ }
break;
default:
break;
@@ -142,11 +154,11 @@
switch (qualityUnqualified.getDealResult()) {
case "鎶ュ簾":
//璋冪敤涓嶅悎鏍煎簱瀛樻帴鍙� 鍏ヤ笉鍚堟牸搴�
- stockUtils.addUnStock(modelId, unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId());
+ stockUtils.addUnStockNoReview(modelId, unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId());
break;
case "璁╂鏀捐":
//璋冪敤鎻愪氦鍚堟牸鐨勬帴鍙�
- stockUtils.addStock(modelId, unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId());
+ stockUtils.addStockNoReview(modelId, unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId());
break;
default:
break;
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 3a42fc7..fe3e20b 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -24,20 +24,18 @@
import com.ruoyi.other.mapper.TempFileMapper;
import com.ruoyi.other.pojo.TempFile;
import com.ruoyi.production.mapper.*;
-import com.ruoyi.production.pojo.*;
import com.ruoyi.production.service.ProductionProductMainService;
-import com.ruoyi.production.service.impl.ProductionProductMainServiceImpl;
import com.ruoyi.project.system.domain.SysDept;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysDeptMapper;
import com.ruoyi.project.system.mapper.SysUserMapper;
import com.ruoyi.quality.mapper.QualityInspectMapper;
-import com.ruoyi.quality.pojo.QualityInspect;
import com.ruoyi.sales.dto.*;
import com.ruoyi.sales.mapper.*;
import com.ruoyi.sales.pojo.*;
-import com.ruoyi.sales.service.ISalesLedgerProductService;
import com.ruoyi.sales.service.ISalesLedgerService;
+import com.ruoyi.stock.dto.StockInventoryDto;
+import com.ruoyi.stock.mapper.StockInventoryMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
@@ -129,6 +127,9 @@
private final ProductionProductInputMapper productionProductInputMapper;
private final QualityInspectMapper qualityInspectMapper;
+
+ private final StockInventoryMapper stockInventoryMapper;
+
@Autowired
private SysDeptMapper sysDeptMapper;
@@ -708,9 +709,26 @@
List<SalesLedgerProduct> updateList = partitionedProducts.get(true);
List<SalesLedgerProduct> insertList = partitionedProducts.get(false);
+ List<StockInventoryDto> stockInventoryDtos = stockInventoryMapper.selectProductList();
+
// 鎵ц鏇存柊鎿嶄綔
if (!updateList.isEmpty()) {
for (SalesLedgerProduct product : updateList) {
+ // 鏌ヨ搴撳瓨鏁伴噺
+ SalesLedgerProduct oldProduct = salesLedgerProductMapper.selectById(product.getId());
+ BigDecimal quantityChange = product.getQuantity().subtract(oldProduct.getQuantity());
+
+ // 濡傛灉鏁伴噺澧炲姞浜嗭紝妫�鏌ュ簱瀛�
+ if (quantityChange.compareTo(BigDecimal.ZERO) > 0) {
+ for (StockInventoryDto stockInventoryDto : stockInventoryDtos) {
+ if (stockInventoryDto.getProductId().equals(product.getId())) {
+ if (quantityChange.compareTo(stockInventoryDto.getQualitity()) > 0) {
+ throw new RuntimeException("搴撳瓨涓嶈冻");
+ }
+ break;
+ }
+ }
+ }
product.setType(type);
salesLedgerProductMapper.updateById(product);
}
@@ -718,13 +736,18 @@
// 鎵ц鎻掑叆鎿嶄綔
if (!insertList.isEmpty()) {
for (SalesLedgerProduct salesLedgerProduct : insertList) {
+ for (StockInventoryDto stockInventoryDto : stockInventoryDtos) {
+ if (stockInventoryDto.getProductId().equals(salesLedgerProduct.getId())) {
+ if (salesLedgerProduct.getQuantity().compareTo(stockInventoryDto.getQualitity()) > 0) {
+ throw new RuntimeException("搴撳瓨涓嶈冻");
+ }
+ }
+ }
salesLedgerProduct.setType(type);
salesLedgerProduct.setNoInvoiceNum(salesLedgerProduct.getQuantity());
salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getTaxInclusiveTotalPrice());
salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice());
salesLedgerProductMapper.insert(salesLedgerProduct);
- // 娣诲姞鐢熶骇鏁版嵁
- salesLedgerProductServiceImpl.addProductionData(salesLedgerProduct);
}
}
}
diff --git a/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
index 125b52b..bfa6fe7 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
@@ -39,4 +39,7 @@
private BigDecimal currentStock;
private BigDecimal unLockedQuantity;
+
+ //浜у搧id
+ private Long productId;
}
diff --git a/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java b/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java
index 0d345df..21fffd4 100644
--- a/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java
+++ b/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java
@@ -49,4 +49,6 @@
List<Map<String, Object>> selectDailyStockOutCounts(@Param("rootCategoryId") Long rootCategoryId, @Param("startDate") String startDate, @Param("endDate") String endDate);
BigDecimal selectTotalByDate(@Param("now") LocalDate now);
+
+ List<StockInventoryDto> selectProductList();
}
diff --git a/src/main/java/com/ruoyi/stock/service/StockInventoryService.java b/src/main/java/com/ruoyi/stock/service/StockInventoryService.java
index eb33f03..f7b1b17 100644
--- a/src/main/java/com/ruoyi/stock/service/StockInventoryService.java
+++ b/src/main/java/com/ruoyi/stock/service/StockInventoryService.java
@@ -44,4 +44,6 @@
void updateOrCreateStockInventory(StockInRecord stockInRecord);
void addApproveByPurchase(LoginUser loginUser, StockInRecordDto stockInRecordDto,Long id) throws Exception;
+
+ Boolean addstockInventoryNoReview(StockInventoryDto stockInventoryDto);
}
diff --git a/src/main/java/com/ruoyi/stock/service/StockUninventoryService.java b/src/main/java/com/ruoyi/stock/service/StockUninventoryService.java
index 92fc0ab..4e0eef5 100644
--- a/src/main/java/com/ruoyi/stock/service/StockUninventoryService.java
+++ b/src/main/java/com/ruoyi/stock/service/StockUninventoryService.java
@@ -33,4 +33,6 @@
Boolean thawStock(StockInventoryDto stockInventoryDto);
void updateOrCreateStockUninventory(StockInRecord stockInRecord);
+
+ Integer addStockUninventoryNoReview(StockUninventoryDto stockUninventoryDto);
}
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
index ec7a12c..85bf8bd 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -147,6 +147,36 @@
}
}
+ //鍗婃垚鍝佺洿鎺ュ叆搴�
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Boolean addstockInventoryNoReview(StockInventoryDto stockInventoryDto) {
+ //鏂板鍏ュ簱璁板綍鍐嶆坊鍔犲簱瀛�
+ StockInRecordDto stockInRecordDto = new StockInRecordDto();
+ stockInRecordDto.setRecordId(stockInventoryDto.getRecordId());
+ stockInRecordDto.setRecordType(stockInventoryDto.getRecordType());
+ stockInRecordDto.setStockInNum(stockInventoryDto.getQualitity());
+ stockInRecordDto.setProductModelId(stockInventoryDto.getProductModelId());
+ stockInRecordDto.setType("0");
+ stockInRecordService.add(stockInRecordDto);
+ //鍐嶈繘琛屾柊澧炲簱瀛樻暟閲忓簱瀛�
+ //鍏堟煡璇㈠簱瀛樿〃涓殑浜у搧鏄惁瀛樺湪锛屼笉瀛樺湪鏂板锛屽瓨鍦ㄦ洿鏂�
+ StockInventory oldStockInventory = stockInventoryMapper.selectOne(new QueryWrapper<StockInventory>().lambda().eq(StockInventory::getProductModelId, stockInventoryDto.getProductModelId()));
+ if (ObjectUtils.isEmpty(oldStockInventory)) {
+ StockInventory newStockInventory = new StockInventory();
+ newStockInventory.setProductModelId(stockInventoryDto.getProductModelId());
+ newStockInventory.setQualitity(stockInventoryDto.getQualitity());
+ newStockInventory.setVersion(1);
+ newStockInventory.setRemark(stockInventoryDto.getRemark());
+ newStockInventory.setLockedQuantity(stockInventoryDto.getLockedQuantity());
+ newStockInventory.setWarnNum(stockInventoryDto.getWarnNum());
+ stockInventoryMapper.insert(newStockInventory);
+ }else {
+ stockInventoryMapper.updateAddStockInventory(stockInventoryDto);
+ }
+ return true;
+ }
+
//鍑哄簱璋冪敤
@Override
@Transactional(rollbackFor = Exception.class)
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
index 6fdef58..7e8a25b 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
@@ -93,6 +93,32 @@
approveProcessService.addApprove(approveProcessVO);
}
+ @Override
+ public Integer addStockUninventoryNoReview(StockUninventoryDto stockUninventoryDto) {
+ //鏂板鍏ュ簱璁板綍鍐嶆坊鍔犲簱瀛�
+ StockInRecordDto stockInRecordDto = new StockInRecordDto();
+ stockInRecordDto.setRecordId(stockUninventoryDto.getRecordId());
+ stockInRecordDto.setRecordType(stockUninventoryDto.getRecordType());
+ stockInRecordDto.setStockInNum(stockUninventoryDto.getQualitity());
+ stockInRecordDto.setProductModelId(stockUninventoryDto.getProductModelId());
+ stockInRecordDto.setType("1");
+ stockInRecordService.add(stockInRecordDto);
+ //鍐嶈繘琛屾柊澧炲簱瀛樻暟閲忓簱瀛�
+ //鍏堟煡璇㈠簱瀛樿〃涓殑浜у搧鏄惁瀛樺湪锛屼笉瀛樺湪鏂板锛屽瓨鍦ㄦ洿鏂�
+ StockUninventory oldStockUnInventory = stockUninventoryMapper.selectOne(new QueryWrapper<StockUninventory>().lambda().eq(StockUninventory::getProductModelId, stockUninventoryDto.getProductModelId()));
+ if (ObjectUtils.isEmpty(oldStockUnInventory)) {
+ StockUninventory newStockUnInventory = new StockUninventory();
+ newStockUnInventory.setProductModelId(stockUninventoryDto.getProductModelId());
+ newStockUnInventory.setQualitity(stockUninventoryDto.getQualitity());
+ newStockUnInventory.setVersion(1);
+ newStockUnInventory.setRemark(stockUninventoryDto.getRemark());
+ stockUninventoryMapper.insert(newStockUnInventory);
+ }else {
+ stockUninventoryMapper.updateAddStockUnInventory(stockUninventoryDto);
+ }
+ return 1;
+ }
+
/**
* 鏇存柊鎴栧垱寤洪潪鑹搧搴撳瓨淇℃伅
*
diff --git a/src/main/resources/mapper/stock/StockInRecordMapper.xml b/src/main/resources/mapper/stock/StockInRecordMapper.xml
index 1dd3a52..11a01a0 100644
--- a/src/main/resources/mapper/stock/StockInRecordMapper.xml
+++ b/src/main/resources/mapper/stock/StockInRecordMapper.xml
@@ -5,29 +5,32 @@
<select id="listPage" resultType="com.ruoyi.stock.dto.StockInRecordDto">
SELECT
sir.*,
- p.product_name as product_name,
+ p.product_name AS product_name,
pm.model,
pm.unit,
- u.nick_name as createBy
- FROM stock_in_record as sir
- LEFT JOIN product_model as pm on sir.product_model_id = pm.id
- LEFT JOIN product as p on pm.product_id = p.id
- LEFT JOIN sys_user as u on sir.create_user = u.user_id
+ u.nick_name AS createBy
+ FROM
+ stock_in_record AS sir
+ LEFT JOIN product_model AS pm ON sir.product_model_id = pm.id
+ LEFT JOIN product AS p ON pm.product_id = p.id
+ LEFT JOIN product p2 ON p.parent_id = p2.id AND p2.product_name != '鍗婃垚鍝�'
+ LEFT JOIN sys_user AS u ON sir.create_user = u.user_id
<where>
<if test="params.timeStr != null and params.timeStr != ''">
- and sir.create_time like concat('%',#{params.timeStr},'%')
+ AND sir.create_time LIKE CONCAT('%', #{params.timeStr}, '%')
</if>
<if test="params.productName != null and params.productName != ''">
- and p.product_name like concat('%',#{params.productName},'%')
+ AND p.product_name LIKE CONCAT('%', #{params.productName}, '%')
</if>
<if test="params.type != null and params.type != ''">
- and sir.type = #{params.type}
+ AND sir.type = #{params.type}
</if>
<if test="params.recordType != null and params.recordType != ''">
- and sir.record_type = #{params.recordType}
+ AND sir.record_type = #{params.recordType}
</if>
</where>
- order by sir.id desc
+ ORDER BY
+ sir.id DESC
</select>
<select id="listStockInRecordExportData" resultType="com.ruoyi.stock.execl.StockInRecordExportData">
SELECT
diff --git a/src/main/resources/mapper/stock/StockInventoryMapper.xml b/src/main/resources/mapper/stock/StockInventoryMapper.xml
index 9db56f9..abdf94f 100644
--- a/src/main/resources/mapper/stock/StockInventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -52,25 +52,30 @@
where product_model_id = #{ew.productModelId} and qualitity >= #{ew.qualitity}
</update>
<select id="pagestockInventory" resultType="com.ruoyi.stock.dto.StockInventoryDto">
- select si.id,
+ SELECT
+ si.id,
si.qualitity,
- COALESCE(si.locked_quantity, 0) as locked_quantity,
+ COALESCE(si.locked_quantity, 0) AS locked_quantity,
si.product_model_id,
si.create_time,
si.update_time,
- COALESCE(si.warn_num, 0) as warn_num,
+ COALESCE(si.warn_num, 0) AS warn_num,
si.version,
- (si.qualitity - COALESCE(si.locked_quantity, 0)) as un_locked_quantity,
+ (si.qualitity - COALESCE(si.locked_quantity, 0)) AS un_locked_quantity,
pm.model,
si.remark,
pm.unit,
- p.product_name
- from stock_inventory si
- left join product_model pm on si.product_model_id = pm.id
- left join product p on pm.product_id = p.id
- where 1 = 1
- <if test="ew.productName != null and ew.productName !=''">
- and p.product_name like concat('%',#{ew.productName},'%')
+ p.product_name,
+ p.parent_id,
+ p2.product_name AS parent_name
+ FROM stock_inventory si
+ LEFT JOIN product_model pm ON si.product_model_id = pm.id
+ LEFT JOIN product p ON pm.product_id = p.id
+ LEFT JOIN product p2 ON p.parent_id = p2.id
+ WHERE 1 = 1
+ AND (p2.product_name != '鍗婃垚鍝�' OR p2.product_name IS NULL)
+ <if test="ew.productName != null and ew.productName != ''">
+ AND p.product_name LIKE CONCAT('%', #{ew.productName}, '%')
</if>
</select>
<select id="listStockInventoryExportData" resultType="com.ruoyi.stock.execl.StockInventoryExportData">
@@ -236,5 +241,24 @@
GROUP BY DATE(sor.create_time)
ORDER BY DATE(sor.create_time) ASC
</select>
+ <select id="selectProductList" resultType="com.ruoyi.stock.dto.StockInventoryDto">
+ select si.id,
+ si.qualitity,
+ COALESCE(si.locked_quantity, 0) as locked_quantity,
+ si.product_model_id,
+ si.create_time,
+ si.update_time,
+ COALESCE(si.warn_num, 0) as warn_num,
+ si.version,
+ (si.qualitity - COALESCE(si.locked_quantity, 0)) as un_locked_quantity,
+ pm.model,
+ si.remark,
+ pm.unit,
+ p.product_name,
+ p.id as product_id
+ from stock_inventory si
+ left join product_model pm on si.product_model_id = pm.id
+ left join product p on pm.product_id = p.id
+ </select>
</mapper>
diff --git a/src/main/resources/mapper/stock/StockOutRecordMapper.xml b/src/main/resources/mapper/stock/StockOutRecordMapper.xml
index a441de9..3366944 100644
--- a/src/main/resources/mapper/stock/StockOutRecordMapper.xml
+++ b/src/main/resources/mapper/stock/StockOutRecordMapper.xml
@@ -27,7 +27,10 @@
FROM stock_out_record as sor
LEFT JOIN product_model as pm on sor.product_model_id = pm.id
LEFT JOIN product as p on pm.product_id = p.id
+ LEFT JOIN product p2 ON p.parent_id = p2.id
LEFT JOIN sys_user as u on sor.create_user = u.user_id
+ WHERE
+ (p2.product_name != '鍗婃垚鍝�' OR p2.product_name IS NULL)
<where>
<if test="params.timeStr != null and params.timeStr != ''">
and sor.create_time like concat('%',#{params.timeStr},'%')
diff --git a/src/main/resources/mapper/stock/StockUninventoryMapper.xml b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
index b171ae2..8b7c21a 100644
--- a/src/main/resources/mapper/stock/StockUninventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
@@ -44,22 +44,27 @@
where product_model_id = #{ew.productModelId}
</update>
<select id="pageStockUninventory" resultType="com.ruoyi.stock.dto.StockUninventoryDto">
- select su.id,
+ SELECT
+ su.id,
su.qualitity,
- COALESCE(su.locked_quantity, 0) as locked_quantity,
+ COALESCE(su.locked_quantity, 0) AS locked_quantity,
su.product_model_id,
su.create_time,
su.update_time,
su.version,
- su.update_time,
- (su.qualitity - COALESCE(su.locked_quantity, 0)) as un_locked_quantity,
+ (su.qualitity - COALESCE(su.locked_quantity, 0)) AS un_locked_quantity,
pm.model,
pm.unit,
- p.product_name
- from stock_uninventory su
- left join product_model pm on su.product_model_id = pm.id
- left join product p on pm.product_id = p.id
- where 1 = 1
+ p.product_name,
+ p2.product_name AS parent_name
+ FROM
+ stock_uninventory su
+ LEFT JOIN product_model pm ON su.product_model_id = pm.id
+ LEFT JOIN product p ON pm.product_id = p.id
+ LEFT JOIN product p2 ON p.parent_id = p2.id
+ WHERE
+ 1 = 1
+ AND (p2.product_name != '鍗婃垚鍝�' OR p2.product_name IS NULL)
<if test="ew.productName != null and ew.productName !=''">
and p.product_name like concat('%',#{ew.productName},'%')
</if>
--
Gitblit v1.9.3