From 0a0aca0ce4696a228b55d4957f9cb634279970e0 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期六, 17 一月 2026 14:56:01 +0800
Subject: [PATCH] 工序新增bug+工序bom工艺路线删除的时候校验
---
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java | 5 +-
src/main/java/com/ruoyi/production/controller/ProcessRouteController.java | 7 ---
src/main/java/com/ruoyi/production/controller/ProductProcessController.java | 5 --
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java | 4 +-
src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java | 23 +++++++++++
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 2
src/main/java/com/ruoyi/production/controller/ProductBomController.java | 8 +++
src/main/java/com/ruoyi/production/service/ProcessRouteService.java | 4 ++
src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java | 27 +++++++++++++
src/main/java/com/ruoyi/production/service/ProductProcessService.java | 2 +
src/main/java/com/ruoyi/production/pojo/ProductOrder.java | 2
11 files changed, 70 insertions(+), 19 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java b/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java
index 31ff3fb..50ac4a8 100644
--- a/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java
@@ -23,9 +23,6 @@
@Autowired
private ProcessRouteService processRouteService;
- @Autowired
- private ProcessRouteItemService processRouteItemService;
-
@GetMapping("page")
@ApiOperation("鍒嗛〉鏌ヨ")
public R page(Page<ProcessRouteDto> page, ProcessRouteDto processRouteDto) {
@@ -45,8 +42,6 @@
@ApiOperation("鍒犻櫎宸ヨ壓璺嚎")
@DeleteMapping("/{ids}")
public R delete(@PathVariable("ids") Long[] ids) {
- //鍒犻櫎宸ヨ壓璺嚎璇︽儏
- processRouteItemService.remove(Wrappers.<ProcessRouteItem>lambdaQuery().in(ProcessRouteItem::getRouteId,Arrays.asList(ids)));
- return R.ok(processRouteService.removeBatchByIds(Arrays.asList(ids)));
+ return R.ok(processRouteService.batchDelete(Arrays.asList(ids)));
}
}
diff --git a/src/main/java/com/ruoyi/production/controller/ProductBomController.java b/src/main/java/com/ruoyi/production/controller/ProductBomController.java
index b8d9416..7279862 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductBomController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductBomController.java
@@ -11,8 +11,10 @@
import com.ruoyi.production.pojo.ProcessRoute;
import com.ruoyi.production.pojo.ProductBom;
import com.ruoyi.production.pojo.ProductProcess;
+import com.ruoyi.production.pojo.ProductProcessRoute;
import com.ruoyi.production.service.ProcessRouteService;
import com.ruoyi.production.service.ProductBomService;
+import com.ruoyi.production.service.ProductProcessRouteService;
import com.ruoyi.production.service.ProductProcessService;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
@@ -39,6 +41,9 @@
@Autowired
private ProcessRouteService processRouteService;
+
+ @Autowired
+ private ProductProcessRouteService productProcessRouteService;
@GetMapping("/listPage")
@Log(title = "BOM-鍒嗛〉鏌ヨ", businessType = BusinessType.OTHER)
@@ -67,7 +72,8 @@
@Log(title = "鍒犻櫎", businessType = BusinessType.DELETE)
public AjaxResult batchDelete(@RequestBody List<Integer> ids) {
List<ProcessRoute> list = processRouteService.list(Wrappers.<ProcessRoute>lambdaQuery().in(ProcessRoute::getBomId, ids));
- if (list.size()>0){
+ List<ProductProcessRoute> list2 = productProcessRouteService.list(Wrappers.<ProductProcessRoute>lambdaQuery().in(ProductProcessRoute::getBomId, ids));
+ if (list.size()>0 || list2.size()>0){
return AjaxResult.error("璇OM宸茬粡瀛樺湪瀵瑰簲鐨勫伐鑹鸿矾绾�,鏃犳硶杩涜鍒犻櫎");
}
if(CollectionUtils.isEmpty(ids)){
diff --git a/src/main/java/com/ruoyi/production/controller/ProductProcessController.java b/src/main/java/com/ruoyi/production/controller/ProductProcessController.java
index cff0c60..c25f2cc 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductProcessController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductProcessController.java
@@ -59,10 +59,7 @@
@DeleteMapping("/batchDelete")
@Log(title = "鍒犻櫎", businessType = BusinessType.DELETE)
public AjaxResult batchDelete(@RequestBody List<Integer> ids) {
- if(CollectionUtils.isEmpty(ids)){
- return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
- }
- return AjaxResult.success(productProcessService.removeBatchByIds(ids));
+ return AjaxResult.success(productProcessService.batchDelete(ids));
}
@ApiOperation("鏌ヨ鎵�鏈夊伐搴�")
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductOrder.java b/src/main/java/com/ruoyi/production/pojo/ProductOrder.java
index c729ea9..dae49a7 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductOrder.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductOrder.java
@@ -34,7 +34,7 @@
private Long productModelId;
/**
- * 宸ヨ壓璺嚎id
+ * 妯$増鐨勫伐鑹鸿矾绾縤d
*/
@ApiModelProperty(value = "宸ヨ壓璺嚎id")
private Long routeId;
diff --git a/src/main/java/com/ruoyi/production/service/ProcessRouteService.java b/src/main/java/com/ruoyi/production/service/ProcessRouteService.java
index bd26b0b..6b408cf 100644
--- a/src/main/java/com/ruoyi/production/service/ProcessRouteService.java
+++ b/src/main/java/com/ruoyi/production/service/ProcessRouteService.java
@@ -7,9 +7,13 @@
import com.ruoyi.production.pojo.ProcessRoute;
import io.swagger.models.auth.In;
+import java.util.List;
+
public interface ProcessRouteService extends IService<ProcessRoute> {
IPage<ProcessRouteDto> pageProcessRouteDto(Page<ProcessRouteDto> page, ProcessRouteDto processRouteDto);
Integer saveProcessRoute(ProcessRoute processRoute);
+
+ int batchDelete(List<Long> ids);
}
diff --git a/src/main/java/com/ruoyi/production/service/ProductProcessService.java b/src/main/java/com/ruoyi/production/service/ProductProcessService.java
index a5ab6c3..8b61bdd 100644
--- a/src/main/java/com/ruoyi/production/service/ProductProcessService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductProcessService.java
@@ -23,4 +23,6 @@
AjaxResult add(ProductProcessDto productProcessDto);
AjaxResult importData(MultipartFile file);
+
+ String batchDelete(List<Integer> ids);
}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
index a5427d2..b3beded 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
@@ -1,11 +1,18 @@
package com.ruoyi.production.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.production.dto.ProcessRouteDto;
+import com.ruoyi.production.mapper.ProcessRouteItemMapper;
import com.ruoyi.production.mapper.ProcessRouteMapper;
+import com.ruoyi.production.mapper.ProductOrderMapper;
+import com.ruoyi.production.mapper.ProductProcessRouteMapper;
import com.ruoyi.production.pojo.ProcessRoute;
+import com.ruoyi.production.pojo.ProcessRouteItem;
+import com.ruoyi.production.pojo.ProductOrder;
+import com.ruoyi.production.pojo.ProductProcessRoute;
import com.ruoyi.production.service.ProcessRouteService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -15,6 +22,8 @@
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
+import java.util.Arrays;
+import java.util.List;
@Service
@AllArgsConstructor
@@ -23,6 +32,12 @@
@Autowired
private ProcessRouteMapper processRouteMapper;
+
+ @Autowired
+ private ProcessRouteItemMapper processRouteItemMapper;
+
+ @Autowired
+ private ProductOrderMapper productOrderMapper;
@Override
public IPage<ProcessRouteDto> pageProcessRouteDto(Page<ProcessRouteDto> page, ProcessRouteDto processRouteDto) {
@@ -40,4 +55,16 @@
processRoute.setProcessRouteCode(newProductCode);
return processRouteMapper.updateById(processRoute);
}
+
+ @Override
+ public int batchDelete(List<Long> ids) {
+ //鍏堝垽鏂槸鍚﹀凡缁忓紩鐢ㄤ簡
+ List<ProductOrder> productOrders = productOrderMapper.selectList(Wrappers.<ProductOrder>lambdaQuery().in(ProductOrder::getRouteId, ids));
+ if (productOrders.size()>0){
+ throw new RuntimeException("璇ュ伐鑹鸿矾绾跨敓浜у凡寮曠敤锛屼笉鑳藉垹闄�");
+ }
+ //鍒犻櫎宸ヨ壓璺嚎璇︽儏
+ processRouteItemMapper.delete(Wrappers.<ProcessRouteItem>lambdaQuery().in(ProcessRouteItem::getRouteId, ids));
+ return processRouteMapper.deleteBatchIds(ids);
+ }
}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java
index 6a8cf73..1f6dd1b 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java
@@ -2,14 +2,19 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.pojo.Customer;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.production.dto.ProductProcessDto;
+import com.ruoyi.production.mapper.ProcessRouteItemMapper;
import com.ruoyi.production.mapper.ProductProcessMapper;
+import com.ruoyi.production.mapper.ProductProcessRouteItemMapper;
+import com.ruoyi.production.pojo.ProcessRouteItem;
import com.ruoyi.production.pojo.ProductProcess;
+import com.ruoyi.production.pojo.ProductProcessRouteItem;
import com.ruoyi.production.service.ProductProcessService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -23,6 +28,10 @@
public class ProductProcessServiceImpl extends ServiceImpl<ProductProcessMapper, ProductProcess> implements ProductProcessService {
@Autowired
private ProductProcessMapper productProcessMapper;
+ @Autowired
+ private ProcessRouteItemMapper processRouteItemMapper;
+ @Autowired
+ private ProductProcessRouteItemMapper productProcessRouteItemMapper;
@Override
public IPage<ProductProcessDto> listPage(Page page, ProductProcessDto productProcessDto) {
@@ -34,7 +43,7 @@
ProductProcess productProcess = new ProductProcess();
BeanUtils.copyProperties(productProcessDto,productProcess);
boolean save = productProcessMapper.insert(productProcess) > 0;
- if (save && ObjectUtils.isNotNull(productProcessDto.getNo())) {
+ if (save && ObjectUtils.isNull(productProcessDto.getNo())) {
// 鏍规嵁id鐢熸垚no瀛楁锛欸X + 8浣嶆暟瀛楋紙涓嶈冻8浣嶅墠闈㈣ˉ0锛�
String no = "GX" + String.format("%08d", productProcess.getId());
productProcess.setNo(no);
@@ -60,4 +69,16 @@
return AjaxResult.error("瀵煎叆澶辫触");
}
}
+
+ @Override
+ public String batchDelete(List<Integer> ids) {
+ //鏌ヨ鏄惁鐢熶骇涓凡缁忓紩鐢ㄤ簡杩欎簺宸ュ簭
+ List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(Wrappers.<ProcessRouteItem>lambdaQuery().in(ProcessRouteItem::getProcessId, ids));
+ List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().in(ProductProcessRouteItem::getProcessId, ids));
+ if (!CollectionUtils.isEmpty(processRouteItems) || !CollectionUtils.isEmpty(productProcessRouteItems)){
+ throw new RuntimeException("璇ュ伐搴忓凡缁忚浣跨敤锛屾棤娉曞垹闄�");
+ }
+ productProcessMapper.deleteBatchIds(ids);
+ return null;
+ }
}
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 b21de5f..ed978b6 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -160,10 +160,10 @@
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() + "搴撳瓨涓�0");
+ throw new RuntimeException(product.getProductName()+"浜у搧鐨�"+productModel1.getModel() + "鐨勮鏍煎簱瀛樹负0");
}
if (stockQuantity.compareTo(productStructureDto.getUnitQuantity().multiply(dto.getQuantity())) < 0) {
- throw new RuntimeException(product.getProductName() + "搴撳瓨涓嶈冻");
+ throw new RuntimeException(product.getProductName()+"浜у搧鐨�"+productModel1.getModel() + "鐨勮鏍煎簱瀛樹笉瓒�");
}
ProductionProductInput productionProductInput = new ProductionProductInput();
productionProductInput.setProductModelId(productStructureDto.getProductModelId());
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 14c0e7d..a044c11 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.production.mapper.*;
import com.ruoyi.production.pojo.*;
@@ -202,7 +203,7 @@
ProcessRoute processRoute = processRouteMapper.selectList(new QueryWrapper<ProcessRoute>().lambda()
.eq(ProcessRoute::getProductModelId, salesLedgerProduct.getProductModelId())
.orderByDesc(ProcessRoute::getCreateTime)).get(0);
- if (processRoute != null) {
+ if (ObjectUtils.isNotNull(processRoute)) {
//鏂板鐢熶骇璁㈠崟宸ヨ壓璺嚎涓昏〃
ProductProcessRoute productProcessRoute = new ProductProcessRoute();
productProcessRoute.setProductModelId(processRoute.getProductModelId());
@@ -258,8 +259,6 @@
productOrder.setRouteId(processRoute.getId());
productOrderMapper.updateById(productOrder);
}
-
-
} else {
salesLedgerProduct.setFutureTickets(salesLedgerProduct.getQuantity());
result = salesLedgerProductMapper.updateById(salesLedgerProduct);
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 9e94a27..4f65d1f 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -705,7 +705,7 @@
ProcessRoute processRoute = processRouteMapper.selectList(new QueryWrapper<ProcessRoute>().lambda()
.eq(ProcessRoute::getProductModelId, salesLedgerProduct.getProductModelId())
.orderByDesc(ProcessRoute::getCreateTime)).get(0);
- if (processRoute != null) {
+ if (ObjectUtils.isNotNull(processRoute)) {
//鏂板鐢熶骇璁㈠崟宸ヨ壓璺嚎涓昏〃
ProductProcessRoute productProcessRoute = new ProductProcessRoute();
productProcessRoute.setProductModelId(processRoute.getProductModelId());
--
Gitblit v1.9.3