From c494daaad7f53cd353e21e7a38a40df4d048ba5a Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 09 一月 2026 17:31:38 +0800
Subject: [PATCH] 生产工单工艺路线删除,同步删除报工,投入,产出,质检,核算
---
src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java | 105 ++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 92 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java b/src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java
index 7370a19..beefe5e 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java
@@ -4,11 +4,16 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.production.dto.ProductProcessRouteItemDto;
-import com.ruoyi.production.mapper.ProductWorkOrderMapper;
-import com.ruoyi.production.pojo.ProductProcessRouteItem;
-import com.ruoyi.production.pojo.ProductWorkOrder;
+import com.ruoyi.production.mapper.*;
+import com.ruoyi.production.pojo.*;
import com.ruoyi.production.service.ProductProcessRouteItemService;
import com.ruoyi.production.service.ProductWorkOrderService;
+import com.ruoyi.quality.mapper.QualityInspectMapper;
+import com.ruoyi.quality.pojo.QualityInspect;
+import com.ruoyi.sales.mapper.SalesLedgerMapper;
+import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
+import com.ruoyi.sales.pojo.SalesLedger;
+import com.ruoyi.sales.pojo.SalesLedgerProduct;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
@@ -23,17 +28,30 @@
import java.util.Map;
import java.util.stream.Collectors;
-@RequestMapping("productProcessRoute")
+@RequestMapping("/productProcessRoute")
@RestController
@AllArgsConstructor
@Api(tags = "鐢熶骇宸ヨ壓璺嚎")
public class ProductProcessRouteItemController {
+ private final ProductOrderMapper productOrderMapper;
private ProductProcessRouteItemService productProcessRouteItemService;
private ProductWorkOrderService productWorkOrderService;
private ProductWorkOrderMapper productWorkOrderMapper;
+
+ private SalesLedgerProductMapper salesLedgerProductMapper;
+
+ private ProductionProductMainMapper productionProductMainMapper;
+
+ private ProductionProductInputMapper productionProductInputMapper;
+
+ private ProductionProductOutputMapper productionProductOutputMapper;
+
+ private QualityInspectMapper qualityInspectMapper;
+
+ private SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper;
@GetMapping("list")
@ApiOperation("鏍规嵁Id鏌ヨ宸ヨ壓椤圭洰")
@@ -45,6 +63,18 @@
@ApiOperation("鎵归噺鏂板淇敼")
@Transactional(rollbackFor = Exception.class)
public R addOrUpdate(@RequestBody ProductProcessRouteItemDto processRouteItemDto) {
+
+ ProductOrder productOrder = productOrderMapper.selectById(processRouteItemDto.getRouteId());
+ if (productOrder == null) {
+ return R.fail("鏈壘鍒癐D涓篬" + processRouteItemDto.getRouteId() + "]鐨勪骇鍝佽鍗�");
+ }
+ SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectOne(new LambdaQueryWrapper<SalesLedgerProduct>()
+ .eq(SalesLedgerProduct::getSalesLedgerId, productOrder.getSalesLedgerId()));
+
+ if (salesLedgerProduct == null) {
+ return R.fail("鏈壘鍒伴攢鍞彴璐D涓篬" + productOrder.getSalesLedgerId() + "]鐨勫彴璐︿骇鍝�");
+ }
+
List<ProductProcessRouteItem> items = processRouteItemDto.getProcessRouteItem();
if (CollectionUtils.isEmpty(items)) {
return R.ok();
@@ -71,7 +101,7 @@
List<Map<String, Object>> maxNoList = productWorkOrderMapper.selectMaps(queryWrapper);
String maxWorkOrderNo = null;
- if (!maxNoList.isEmpty() && maxNoList.get(0).get("maxNo") != null) {
+ if (!maxNoList.isEmpty() && maxNoList.get(0) != null && maxNoList.get(0).get("maxNo") != null) {
maxWorkOrderNo = maxNoList.get(0).get("maxNo").toString();
}
int startSequence = 1;
@@ -92,6 +122,7 @@
workOrder.setProductProcessRouteItemId(item.getId());
workOrder.setProductOrderId(item.getRouteId());
workOrder.setWorkOrderNo(workOrderNoStr);
+ workOrder.setPlanQuantity(salesLedgerProduct.getQuantity());
workOrder.setStatus(1);
workOrders.add(workOrder);
}
@@ -108,22 +139,70 @@
@ApiOperation("鍒犻櫎鐢熶骇宸ヨ壓璺嚎")
@Transactional(rollbackFor = Exception.class)
public R deleteRouteItem(@RequestBody ProductProcessRouteItemDto processRouteItemDto) {
+
if (processRouteItemDto == null || processRouteItemDto.getId() == null) {
- return R.fail("鍙傛暟閿欒锛孖D涓嶈兘涓虹┖");
+ return R.fail("鍒犻櫎澶辫触锛氬伐鑹鸿矾绾块」ID涓嶈兘涓虹┖");
}
+ Long routeItemId = processRouteItemDto.getId();
try {
- // 鍏堝垹闄ゅ叧鑱旂殑宸ュ崟鏁版嵁
- LambdaQueryWrapper<ProductWorkOrder> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(ProductWorkOrder::getProductProcessRouteItemId, processRouteItemDto.getId());
- productWorkOrderMapper.delete(wrapper);
+ // 鏌ヨ宸ュ崟
+ ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectOne(
+ new LambdaQueryWrapper<ProductWorkOrder>()
+ .eq(ProductWorkOrder::getProductProcessRouteItemId, routeItemId)
+ .last("LIMIT 1")
+ );
+ if (productWorkOrder == null) {
+ return R.fail("鍒犻櫎澶辫触锛氭湭鎵惧埌鍏宠仈鐨勭敓浜у伐鍗�");
+ }
+ Long workOrderId = productWorkOrder.getId();
+ Long productOrderId = productWorkOrder.getProductOrderId();
+
+ // 鏌ヨ鐢熶骇涓昏〃
+ List<ProductionProductMain> productionProductMains = productionProductMainMapper.selectList(
+ new LambdaQueryWrapper<ProductionProductMain>()
+ .eq(ProductionProductMain::getWorkOrderId, workOrderId)
+ );
+ if (!productionProductMains.isEmpty()) {
+ // 鎵归噺鍒犻櫎瀛愯〃
+ for (ProductionProductMain main : productionProductMains) {
+ Long mainId = main.getId();
+ // 鍒犻櫎鎶曞叆
+ productionProductInputMapper.delete(new LambdaQueryWrapper<ProductionProductInput>()
+ .eq(ProductionProductInput::getProductMainId, mainId));
+ // 鍒犻櫎浜у嚭
+ productionProductOutputMapper.delete(new LambdaQueryWrapper<ProductionProductOutput>()
+ .eq(ProductionProductOutput::getProductMainId, mainId));
+ // 鍒犻櫎璐ㄦ
+ qualityInspectMapper.delete(new LambdaQueryWrapper<QualityInspect>()
+ .eq(QualityInspect::getProductMainId, mainId));
+ }
+ }
+
+ // 鍒犻櫎鎶ュ伐锛堢敓浜т富琛級
+ productionProductMainMapper.delete(new LambdaQueryWrapper<ProductionProductMain>()
+ .eq(ProductionProductMain::getWorkOrderId, workOrderId));
+
+ // 鏌ヨ璁㈠崟 + 鍒犻櫎鏍哥畻
+ ProductOrder productOrder = productOrderMapper.selectById(productOrderId);
+ if (productOrder != null && productOrder.getSalesLedgerId() != null) {
+ salesLedgerProductionAccountingMapper.delete(new LambdaQueryWrapper<SalesLedgerProductionAccounting>()
+ .eq(SalesLedgerProductionAccounting::getSalesLedgerId, productOrder.getSalesLedgerId()));
+ }
+
+ // 鍒犻櫎鍏宠仈宸ュ崟
+ productWorkOrderMapper.delete(new LambdaQueryWrapper<ProductWorkOrder>()
+ .eq(ProductWorkOrder::getProductProcessRouteItemId, routeItemId));
// 鍒犻櫎涓昏〃鏁版嵁
- productProcessRouteItemService.removeById(processRouteItemDto.getId());
+ boolean removeFlag = productProcessRouteItemService.removeById(routeItemId);
+ if (!removeFlag) {
+ return R.fail("鍒犻櫎澶辫触锛氬伐鑹鸿矾绾块」涓昏〃鏁版嵁涓嶅瓨鍦�");
+ }
+
return R.ok();
} catch (Exception e) {
- throw new RuntimeException("鍒犻櫎澶辫触锛�" + e.getMessage());
+ return R.fail("鍒犻櫎鐢熶骇宸ヨ壓璺嚎澶辫触锛�" + e.getMessage());
}
}
-
}
--
Gitblit v1.9.3