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