From 352a6420c3241955abd26aaaad997fdc65ffdb3a Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期四, 26 三月 2026 14:27:32 +0800
Subject: [PATCH] feat: 销售订单绑定工艺路线
---
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 61 +++++++++++++++++++++---------
1 files changed, 42 insertions(+), 19 deletions(-)
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 5b57888..991d011 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -15,6 +15,7 @@
import com.ruoyi.basic.pojo.Customer;
import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.enums.SaleEnum;
+import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.EnumUtil;
@@ -26,6 +27,8 @@
import com.ruoyi.other.mapper.TempFileMapper;
import com.ruoyi.other.pojo.TempFile;
import com.ruoyi.production.mapper.*;
+import com.ruoyi.production.pojo.ProcessRoute;
+import com.ruoyi.production.pojo.ProcessRouteItem;
import com.ruoyi.production.service.ProductionProductMainService;
import com.ruoyi.project.system.domain.SysDept;
import com.ruoyi.project.system.domain.SysUser;
@@ -37,6 +40,7 @@
import com.ruoyi.sales.dto.*;
import com.ruoyi.sales.mapper.*;
import com.ruoyi.sales.pojo.*;
+import com.ruoyi.sales.service.ISalesLedgerProcessRouteService;
import com.ruoyi.sales.service.ISalesLedgerProductProcessBindService;
import com.ruoyi.sales.service.ISalesLedgerProductProcessService;
import com.ruoyi.sales.service.ISalesLedgerService;
@@ -116,6 +120,8 @@
private final ISalesLedgerProductProcessService salesLedgerProductProcessService;
private final ISalesLedgerProductProcessBindService salesLedgerProductProcessBindService;
+
+ private final ISalesLedgerProcessRouteService salesLedgerProcessRouteService;
@Autowired
private SysDeptMapper sysDeptMapper;
@@ -521,6 +527,38 @@
return salesLedgerDtoIPage;
}
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void saleProcessBind(SalesLedgerProcessRoute salesLedgerProcessRoute) {
+ if (salesLedgerProcessRoute == null) {
+ throw new ServiceException("缁戝畾澶辫触,鏁版嵁涓嶈兘涓虹┖");
+ }
+
+ SalesLedger salesLedger = baseMapper.selectById(salesLedgerProcessRoute.getSalesLedgerId());
+ if (salesLedger == null) {
+ throw new ServiceException("缁戝畾澶辫触,閿�鍞鍗曚笉瀛樺湪");
+ }
+ ProcessRoute processRoute = processRouteMapper.selectById(salesLedgerProcessRoute.getProcessRouteId());
+ if (processRoute == null) {
+ throw new ServiceException("缁戝畾澶辫触,宸ヨ壓璺嚎涓嶅瓨鍦�");
+ }
+ // 娓呴櫎宸茬粦瀹氱殑鏁版嵁
+ salesLedgerProcessRouteService.remove(new LambdaQueryWrapper<SalesLedgerProcessRoute>().eq(SalesLedgerProcessRoute::getSalesLedgerId, salesLedger.getId()).eq(SalesLedgerProcessRoute::getProcessRouteId, processRoute.getId()));
+
+ // 灏嗘暟鎹縼绉诲埌sales_ledger_process_route
+ List<ProcessRouteItem> routeItems = processRouteItemMapper.selectList(new LambdaQueryWrapper<ProcessRouteItem>().eq(ProcessRouteItem::getRouteId, processRoute.getId()));
+ SalesLedgerProcessRoute ledgerProcessRoute;
+ List<SalesLedgerProcessRoute> salesLedgerProcessRouteList = new ArrayList<>();
+ for (ProcessRouteItem routeItem : routeItems) {
+ ledgerProcessRoute = new SalesLedgerProcessRoute();
+ ledgerProcessRoute.setProcessRouteId(processRoute.getId());
+ ledgerProcessRoute.setSalesLedgerId(salesLedger.getId());
+ ledgerProcessRoute.setProcessRouteItemId(routeItem.getId());
+ salesLedgerProcessRouteList.add(ledgerProcessRoute);
+ }
+ salesLedgerProcessRouteService.saveBatch(salesLedgerProcessRouteList);
+ }
+
/**
* 涓嬪垝绾垮懡鍚嶈浆椹煎嘲鍛藉悕
*/
@@ -754,17 +792,8 @@
for (SalesLedgerProduct product : updateList) {
product.setType(type.getCode());
salesLedgerProductMapper.updateById(product);
- // 瀹炵幇鍒犻櫎缁戝畾鐨勫叏閮ㄥ姞宸�
- salesLedgerProductProcessBindService.remove(new LambdaQueryWrapper<SalesLedgerProductProcessBind>().eq(SalesLedgerProductProcessBind::getSalesLedgerProductId, product.getId()));
- // 缁戝畾浜у搧棰濆鍔犲伐
- List<SalesLedgerProductProcess> salesProductProcessList = product.getSalesProductProcessList();
- salesProductProcessList.forEach(s -> {
- SalesLedgerProductProcessBind processBind = new SalesLedgerProductProcessBind();
- processBind.setSalesLedgerProductId(Math.toIntExact(product.getId()));
- processBind.setSalesLedgerProductProcessId(s.getId());
- processBind.setQuantity(s.getQuantity());
- salesLedgerProductProcessBindService.save(processBind);
- });
+ // 娓呯┖閿�鍞骇鍝佺粦瀹氱殑鍔犲伐
+ salesLedgerProductProcessBindService.updateProductProcessBind(product.getSalesProductProcessList(), product.getId());
}
}
// 鎵ц鎻掑叆鎿嶄綔
@@ -776,14 +805,8 @@
salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice());
salesLedgerProductMapper.insert(salesLedgerProduct);
// 缁戝畾浜у搧棰濆鍔犲伐
- List<SalesLedgerProductProcess> salesProductProcessList = salesLedgerProduct.getSalesProductProcessList();
- salesProductProcessList.forEach(s -> {
- SalesLedgerProductProcessBind processBind = new SalesLedgerProductProcessBind();
- processBind.setSalesLedgerProductId(Math.toIntExact(salesLedgerProduct.getId()));
- processBind.setSalesLedgerProductProcessId(s.getId());
- processBind.setQuantity(s.getQuantity());
- salesLedgerProductProcessBindService.save(processBind);
- });
+ // 娓呯┖閿�鍞骇鍝佺粦瀹氱殑鍔犲伐
+ salesLedgerProductProcessBindService.updateProductProcessBind(salesLedgerProduct.getSalesProductProcessList(), salesLedgerProduct.getId());
// 娣诲姞鐢熶骇鏁版嵁
salesLedgerProductServiceImpl.addProductionData(salesLedgerProduct);
}
--
Gitblit v1.9.3