From 426ea165d182158227484dbea63e5c5cafaf6dac Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期二, 17 三月 2026 17:18:19 +0800
Subject: [PATCH] 1.库存(展示非半成品) 2.入库记录展示非半成品以及过磅单 3.报工直接入库
---
src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java | 5 +
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java | 49 +-----------
src/main/resources/mapper/stock/StockInventoryMapper.xml | 60 ++++++--------
src/main/resources/mapper/stock/StockInRecordMapper.xml | 24 +++--
src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java | 46 +++++++---
src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java | 3
6 files changed, 83 insertions(+), 104 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 d811177..58d1025 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -9,13 +9,10 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.mapper.ProductMapper;
import com.ruoyi.basic.mapper.ProductModelMapper;
-import com.ruoyi.basic.pojo.Product;
import com.ruoyi.basic.pojo.ProductModel;
import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
-import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.dto.ProductionProductMainDto;
@@ -25,12 +22,13 @@
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysUserMapper;
import com.ruoyi.quality.mapper.*;
-import com.ruoyi.quality.pojo.*;
+import com.ruoyi.quality.pojo.QualityInspect;
+import com.ruoyi.quality.pojo.QualityInspectParam;
+import com.ruoyi.quality.pojo.QualityUnqualified;
import com.ruoyi.quality.service.IQualityInspectService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import com.ruoyi.production.mapper.ProductionProductMainMapper;
import java.math.BigDecimal;
import java.time.LocalDate;
@@ -170,45 +168,8 @@
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;
-// String process = productProcess.getName();//宸ュ簭
-// if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) {
-// //鏈�鍚庝竴閬撳伐搴忕敓鎴愬嚭鍘傛
-// inspectType = 2;
-// process = null;
-// }
-// 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(productQty);
-// qualityInspect.setProcess(process);
-// qualityInspect.setInspectState(0);
-// qualityInspect.setInspectType(inspectType);
-// qualityInspect.setProductMainId(productionProductMain.getId());
-// qualityInspect.setProductModelId(productModel.getId());
-// qualityInspectMapper.insert(qualityInspect);
-// List<QualityTestStandard> qualityTestStandard = qualityTestStandardMapper.getQualityTestStandardByProductId(product.getId(), inspectType, process);
-// if (qualityTestStandard.size() > 0) {
-// qualityInspect.setTestStandardId(qualityTestStandard.get(0).getId());
-// qualityInspectMapper.updateById(qualityInspect);
-// qualityTestStandardParamMapper.selectList(Wrappers.<QualityTestStandardParam>lambdaQuery()
-// .eq(QualityTestStandardParam::getTestStandardId, qualityTestStandard.get(0).getId()))//榛樿鑾峰彇鏈�鏂扮殑
-// .forEach(qualityTestStandardParam -> {
-// QualityInspectParam param = new QualityInspectParam();
-// BeanUtils.copyProperties(qualityTestStandardParam, param);
-// param.setId(null);
-// param.setInspectId(qualityInspect.getId());
-// qualityInspectParamMapper.insert(param);
-// });
-// }
- }else {
- //鐩存帴鍏ュ簱
- stockUtils.addStock(productProcessRouteItem.getProductModelId(), productQty, StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId());
- }
+ //涓嶇鏄惁璐ㄦ閮界洿鎺ュ叆搴�
+ stockUtils.addStock(productProcessRouteItem.getProductModelId(), productQty, StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId());
/*鏇存柊宸ュ崟鍜岀敓浜ц鍗�*/
ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(dto.getWorkOrderId());
productWorkOrder.setCompleteQuantity(productWorkOrder.getCompleteQuantity().add(productQty));
diff --git a/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java b/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
index b640ec9..c60d7f6 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
@@ -30,4 +30,7 @@
//鐜板噣閲�
private BigDecimal currentWeight;
+
+ //浜у搧绫诲瀷
+ private String productType;
}
diff --git a/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
index 9c3f5de..dc48e5f 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
@@ -1,5 +1,6 @@
package com.ruoyi.stock.dto;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.stock.pojo.StockInventory;
import io.swagger.annotations.ApiModelProperty;
@@ -68,4 +69,8 @@
@ApiModelProperty("纾呭崟鏂囦欢璺緞")
private String weighbridgeDocPath;
+
+ @ApiModelProperty("浜у搧绫诲瀷")
+ @TableField(exist = false)
+ private Integer productType;
}
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 ce432d5..cdb75a1 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -59,32 +59,46 @@
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean addstockInventory(StockInventoryDto stockInventoryDto) {
- //鏂板鍏ュ簱璁板綍鍐嶆坊鍔犲簱瀛�
+ // 1. 鍒涘缓鍏ュ簱璁板綍
StockInRecordDto stockInRecordDto = new StockInRecordDto();
stockInRecordDto.setRecordId(stockInventoryDto.getRecordId());
stockInRecordDto.setRecordType(stockInventoryDto.getRecordType());
- stockInRecordDto.setStockInNum(stockInventoryDto.getNetWeight());
- stockInRecordDto.setWeighingDate(stockInventoryDto.getWeighingDate());
- stockInRecordDto.setNetWeight(stockInventoryDto.getNetWeight());
- stockInRecordDto.setGrossWeight(stockInventoryDto.getGrossWeight());
- stockInRecordDto.setTareWeight(stockInventoryDto.getTareWeight());
- stockInRecordDto.setLicensePlateNo(stockInventoryDto.getLicensePlateNo());
stockInRecordDto.setWeighingOperator(stockInventoryDto.getWeighingOperator());
stockInRecordDto.setProductModelId(stockInventoryDto.getProductModelId());
stockInRecordDto.setProductId(stockInventoryDto.getProductId());
stockInRecordDto.setRemark(stockInventoryDto.getRemark());
stockInRecordDto.setType("0");
- //鐢熸垚纾呭崟
- String absoluteDocPath = weighbridgeDocGenerator.generateWeighbridgeDoc(stockInRecordDto);
- stockInRecordDto.setWeighbridgeDocPath(absoluteDocPath);
+
+ // 鏍规嵁浜у搧绫诲瀷璁剧疆涓嶅悓鐨勯噸閲忓瓧娈�
+ if (stockInventoryDto.getProductType() != null && stockInventoryDto.getProductType() == 0) {
+ stockInRecordDto.setStockInNum(stockInventoryDto.getNetWeight());
+ stockInRecordDto.setWeighingDate(stockInventoryDto.getWeighingDate());
+ stockInRecordDto.setNetWeight(stockInventoryDto.getNetWeight());
+ stockInRecordDto.setGrossWeight(stockInventoryDto.getGrossWeight());
+ stockInRecordDto.setTareWeight(stockInventoryDto.getTareWeight());
+ stockInRecordDto.setLicensePlateNo(stockInventoryDto.getLicensePlateNo());
+ // 鐢熸垚纾呭崟
+ String absoluteDocPath = weighbridgeDocGenerator.generateWeighbridgeDoc(stockInRecordDto);
+ stockInRecordDto.setWeighbridgeDocPath(absoluteDocPath);
+ } else {
+ stockInRecordDto.setStockInNum(stockInventoryDto.getQualitity());
+ stockInRecordDto.setNetWeight(stockInventoryDto.getQualitity());
+ }
+
+ // 淇濆瓨鍏ュ簱璁板綍
stockInRecordService.add(stockInRecordDto);
- //鍐嶈繘琛屾柊澧炲簱瀛樻暟閲忓簱瀛�
- //鍏堟煡璇㈠簱瀛樿〃涓殑浜у搧鏄惁瀛樺湪锛屼笉瀛樺湪鏂板锛屽瓨鍦ㄦ洿鏂�
- StockInventory oldStockInventory = stockInventoryMapper.selectOne(new QueryWrapper<StockInventory>().lambda().eq(StockInventory::getProductModelId, stockInventoryDto.getProductModelId()));
+
+ // 2. 鏇存柊搴撳瓨
+ 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.getNetWeight());
+ newStockInventory.setQualitity(stockInventoryDto.getProductType() == 0 ?
+ stockInventoryDto.getNetWeight() : stockInventoryDto.getQualitity());
newStockInventory.setVersion(1);
newStockInventory.setRemark(stockInventoryDto.getRemark());
newStockInventory.setLockedQuantity(stockInventoryDto.getLockedQuantity());
@@ -92,7 +106,9 @@
newStockInventory.setProductId(stockInventoryDto.getProductId());
stockInventoryMapper.insert(newStockInventory);
} else {
- stockInventoryDto.setQualitity(stockInventoryDto.getNetWeight());
+ // 鏇存柊搴撳瓨
+ stockInventoryDto.setQualitity(stockInventoryDto.getProductType() != null && stockInventoryDto.getProductType() == 0 ?
+ stockInventoryDto.getNetWeight() : stockInventoryDto.getQualitity());
stockInventoryMapper.updateAddStockInventory(stockInventoryDto);
}
return true;
diff --git a/src/main/resources/mapper/stock/StockInRecordMapper.xml b/src/main/resources/mapper/stock/StockInRecordMapper.xml
index cabdb25..295e480 100644
--- a/src/main/resources/mapper/stock/StockInRecordMapper.xml
+++ b/src/main/resources/mapper/stock/StockInRecordMapper.xml
@@ -4,31 +4,33 @@
<select id="listPage" resultType="com.ruoyi.stock.dto.StockInRecordDto">
SELECT
+ p1.product_name AS product_type,
sir.*,
- p.product_name as product_name,
+ p.product_name AS product_name,
pm.model,
pm.unit,
sir.weighbridge_doc_path,
- 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
+ INNER JOIN product p1 ON p1.id = p.parent_id AND p1.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 8704a51..9e0ab0e 100644
--- a/src/main/resources/mapper/stock/StockInventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -57,53 +57,45 @@
</update>
<select id="pagestockInventory" resultType="com.ruoyi.stock.dto.StockInventoryDto">
- select
+ SELECT
si.id,
-- 褰撳墠鍑�閲� = 鍏ュ簱鍑�閲� - 鍑哄簱鍑�閲�
- (COALESCE(sir.total_net_weight,0) - COALESCE(sor.total_net_weight,0)) as net_weight,
+ (COALESCE(sir.total_net_weight, 0) - COALESCE(sor.total_net_weight, 0)) AS net_weight,
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,
- p1.product_name as parent_name,
- p1.id as parent_id,
- si.product_id as productId
- 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 p1 on p.parent_id = p1.id
- -- 鍏ュ簱鍑�閲�
- left join (
- select
- product_model_id,
- sum(net_weight) as total_net_weight
- from stock_in_record
- group by product_model_id
- ) sir on si.product_model_id = sir.product_model_id
- -- 鍑哄簱鍑�閲�
- left join (
- select
- product_model_id,
- sum(net_weight) as total_net_weight
- from stock_out_record
- group by product_model_id
- ) sor on si.product_model_id = sor.product_model_id
-
+ p1.product_name AS parent_name,
+ p1.id AS parent_id,
+ si.product_id AS productId
+ FROM stock_inventory si
+ INNER JOIN product_model pm ON si.product_model_id = pm.id
+ INNER JOIN product p ON pm.product_id = p.id
+ INNER JOIN product p1 ON p.parent_id = p1.id AND p1.product_name != '鍗婃垚鍝�'
+ LEFT JOIN (
+ SELECT product_model_id, SUM(net_weight) AS total_net_weight
+ FROM stock_in_record
+ GROUP BY product_model_id
+ ) sir ON si.product_model_id = sir.product_model_id
+ LEFT JOIN (
+ SELECT product_model_id, SUM(net_weight) AS total_net_weight
+ FROM stock_out_record
+ GROUP BY product_model_id
+ ) sor ON si.product_model_id = sor.product_model_id
<where>
- 1=1
- <if test="ew.parentId != null and ew.parentId !=''">
- and p.parent_id = #{ew.parentId}
+ <if test="ew.parentId != null and ew.parentId != ''">
+ AND p.parent_id = #{ew.parentId}
</if>
- <if test="ew.productName != null and ew.productName !=''">
- and p.product_name like concat('%',#{ew.productName},'%')
+ <if test="ew.productName != null and ew.productName != ''">
+ AND p.product_name LIKE CONCAT('%', #{ew.productName}, '%')
</if>
</where>
</select>
--
Gitblit v1.9.3