From 663120b055dfdced4a67ce1d4160ae8ca19b4190 Mon Sep 17 00:00:00 2001
From: chenhj <1263187585@qq.com>
Date: 星期四, 12 三月 2026 18:04:21 +0800
Subject: [PATCH] 修改工单所需数量
---
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java | 40 +++++++++++++++++--
src/main/resources/mapper/production/ProductOrderMapper.xml | 3 +
src/main/java/com/ruoyi/production/pojo/ProductStructure.java | 4 ++
src/main/resources/mapper/production/ProductStructureMapper.xml | 1
src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java | 16 -------
5 files changed, 43 insertions(+), 21 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductStructure.java b/src/main/java/com/ruoyi/production/pojo/ProductStructure.java
index de0d605..155037d 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductStructure.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductStructure.java
@@ -53,4 +53,8 @@
private Long bomId;
+ /**
+ * 鏉愭枡绫诲瀷锛�0涓绘枡锛� 1杈呮枡锛�
+ */
+ private String materialType;
}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java
index 310a723..e4ef9d9 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java
@@ -1,26 +1,16 @@
package com.ruoyi.production.service.impl;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.basic.dto.ProductModelDto;
-import com.ruoyi.basic.dto.ProductTreeDto;
-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.production.dto.ProductStructureDto;
-import com.ruoyi.production.mapper.ProductBomMapper;
import com.ruoyi.production.mapper.ProductStructureMapper;
import com.ruoyi.production.pojo.ProductStructure;
import com.ruoyi.production.service.ProductStructureService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import java.util.ArrayList;
import java.util.List;
@Service
@@ -30,8 +20,6 @@
@Autowired
private ProductStructureMapper productStructureMapper;
-
-
@Override
public Boolean addProductStructureDto(ProductStructureDto productStructureDto) {
@@ -44,8 +32,6 @@
@Override
public List<ProductStructureDto> listBybomId(Long bomId) {
- List<ProductStructureDto> tree = productStructureMapper.listBybomId(bomId);
- return tree;
-
+ return productStructureMapper.listBybomId(bomId);
}
}
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
index 9139554..08f431c 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -5,11 +5,10 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.OrderUtils;
import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.mapper.*;
import com.ruoyi.production.pojo.*;
import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
@@ -21,14 +20,13 @@
import com.ruoyi.sales.mapper.InvoiceRegistrationProductMapper;
import com.ruoyi.sales.mapper.SalesLedgerMapper;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
-import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
import com.ruoyi.sales.pojo.SalesLedger;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
import com.ruoyi.sales.service.ISalesLedgerProductService;
import lombok.AllArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import java.lang.reflect.Field;
@@ -73,6 +71,8 @@
private ProductionProductOutputMapper productionProductOutputMapper;
private ProductionProductInputMapper productionProductInputMapper;
private QualityInspectMapper qualityInspectMapper;
+ private ProductBomMapper productBomMapper;
+ private ProductStructureMapper productStructureMapper;
@Override
public SalesLedgerProduct selectSalesLedgerProductById(Long id) {
@@ -286,6 +286,13 @@
.orderByDesc(ProcessRoute::getCreateTime));
if (processRoutes.size()>0){
ProcessRoute processRoute = processRoutes.get(0);
+ // 鑾峰彇浜у搧bom淇℃伅
+ List<ProductStructureDto> productStructureDtos = productStructureMapper.listBybomId(processRoute.getBomId());
+ if (salesLedgerProduct.getQuantity() == null) {
+ throw new RuntimeException("鏈�缁堢敓浜ф暟閲忎笉瀛樺湪");
+ }
+ Map<Long, BigDecimal> quantities = countWorkOrderNum(productStructureDtos, salesLedgerProduct.getQuantity());
+
//鏂板鐢熶骇璁㈠崟宸ヨ壓璺嚎涓昏〃
ProductProcessRoute productProcessRoute = new ProductProcessRoute();
productProcessRoute.setProductModelId(processRoute.getProductModelId());
@@ -331,7 +338,7 @@
ProductWorkOrder productWorkOrder = new ProductWorkOrder();
productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId());
productWorkOrder.setProductOrderId(productOrder.getId());
- productWorkOrder.setPlanQuantity(salesLedgerProduct.getQuantity());
+ productWorkOrder.setPlanQuantity(quantities.get(processRouteItem.getProcessId()));
productWorkOrder.setWorkOrderNo(workOrderNoStr);
productWorkOrder.setStatus(1);
@@ -345,6 +352,29 @@
}
/**
+ * 璁$畻宸ュ崟鏁伴噺
+ * productStructures bom淇℃伅
+ * quantity 闇�姹傛暟閲�
+ */
+ public Map<Long, BigDecimal> countWorkOrderNum(List<ProductStructureDto> productStructures, BigDecimal quantity) {
+ BigDecimal originalQuantity = quantity;
+ Map<Long, BigDecimal> resultMap = new HashMap<>();
+ resultMap.put(productStructures.get(productStructures.size() - 1).getProcessId(), quantity);
+ for (int i = productStructures.size() - 2; i >= 0; i--) {
+ ProductStructureDto productStructureDto = productStructures.get(i);
+ Assert.notNull(productStructureDto.getUnitQuantity(), "鍗曚綅浜у嚭鎵�闇�鏁伴噺涓嶅瓨鍦�");
+ if (productStructureDto.getMaterialType().equals("0")) {
+ quantity = quantity.multiply(productStructureDto.getUnitQuantity());
+ resultMap.put(productStructureDto.getProcessId(), quantity);
+ } else {
+ resultMap.put(productStructureDto.getProcessId(), originalQuantity.multiply(productStructureDto.getUnitQuantity()));
+ }
+
+ }
+ return resultMap;
+ }
+
+ /**
* 鍒犻櫎鐢熶骇鏁版嵁
*/
public void deleteProductionData(List<Long> productIds) {
diff --git a/src/main/resources/mapper/production/ProductOrderMapper.xml b/src/main/resources/mapper/production/ProductOrderMapper.xml
index 4c2b1f8..77f440e 100644
--- a/src/main/resources/mapper/production/ProductOrderMapper.xml
+++ b/src/main/resources/mapper/production/ProductOrderMapper.xml
@@ -70,7 +70,8 @@
p.product_name,
pp.name as process_name,
pm.product_id,
- pm.model
+ pm.model,
+ ps.material_type
from
product_structure ps
left join product_model pm on ps.product_model_id = pm.id
diff --git a/src/main/resources/mapper/production/ProductStructureMapper.xml b/src/main/resources/mapper/production/ProductStructureMapper.xml
index e4a0795..1dd30cd 100644
--- a/src/main/resources/mapper/production/ProductStructureMapper.xml
+++ b/src/main/resources/mapper/production/ProductStructureMapper.xml
@@ -10,6 +10,7 @@
<result property="demandedQuantity" column="demanded_quantity"/>
<result property="unit" column="unit"/>
<result property="tenantId" column="tenant_id"/>
+ <result property="materialType" column="material_type"/>
</resultMap>
<select id="listBybomId" resultType="com.ruoyi.production.dto.ProductStructureDto">
select ps.*,
--
Gitblit v1.9.3